This project aims to establish a decentralized education platform that will offer fast and easy access to educational resources for teachers and students. Unlike typical e-learning platforms that rely on software and systems, Sandy E-learning platform uses decentralized blockchain as its core technology (The construction of the blockchain and the storage of the corresponding data were implemented using the protocols associated with Ethereum). It does not need to be integrated with existing school systems, such as linking with student information databases to achieve information integration, which is a common practice in university education websites.
The project provides a new solution for developing higher education by creating a secure, replicable, fast, decentralized education resource-sharing platform rather than providing a specific software. This platform enables easy access to educational resources and fosters seamless knowledge-sharing among learners and educators, promoting a more equitable and democratic approach to education.
- Demo Website: https://sandy.hanjiaming.eu.org/ (PolyU Connect ID SSO)
- Github Repository: https://github.com/guomaimang/Sandy_E-Learning
- Security
- Zero Trust Model
- Cloudflare: Prevent Brute Force Attacks / DDOS / CC
- Recaptcha V3: Prevent Crawlers and Dictionary Attack
- Password Encryption: Support SHA256 / MD5
- Prevent Replay Attacks: Blockchain Decentralized Transaction
- Prevent Cross-Domain: XSS、CSRF
- Global CDN: Hide the real IP of Server
- SSL: Encrypted Connection to Prevent Eavesdropping
- Authentication
- SSO(Oauth2): PolyU Connect ID Login
- Permission Management: PolyU ADFS Sync
- General Login Interface
- Metaverse
- Decentralization
- Nginx High Availability for Distributed Servers
- Storage: User's data is placed on Blockchain
- Blockchain: Implementing Smart Contracts from scratch with Solidity Language
- 2D Interface: JavaScript / Browser (Chrome V8)
- Persistent Data Storage: Blockchain
- Interaction and Sharing: Realization Education Forum
- Decentralization
- Education: A Platform like Blackboard
- Devops/Best Practices: Kubernetes + Docker -> Complete Lifecycle of Software Engineering
- Global CDN: Speed up access for users around the world
- Nginx Load Balancing: ensuring business continuity
- Asynchronous Updates Blockchain: Modern Human-Computer Interaction Experience
- Modern Software Architecture: Springboot3 + JavaScript(CommonJS) + Mysql/BlockChain
- Functional modularity and easy coupling
- Strict and standardized Restful architecture
- Complete front and back-end separation
SandyELearningApplication.java: Main entry point for the application.
common: Contains common utility classes.
├── Constants.java: Holds constant values used throughout the application.
├── Result.java: Represents the result of an operation.
├── ResultGenerator.java: Generates results based on certain conditions.
config: Contains configuration classes and handlers.
├── SpringBootWebMvcConfigurer.java: Configures the Spring Boot Web MVC framework.
├── annotation: Contains custom annotations.
└── TokenToUser.java: Custom annotation for token to user conversion.
├── handler: Contains custom handlers.
└── TokenToUserMethodArgumentResolver.java: Resolves method arguments for token to user conversion.
controller: Contains controller classes for handling HTTP requests.
├── ArticleController.java: Handles requests related to articles.
├── GeneralUserController.java: Handles requests related to general users.
├── Oauth2Controller.java: Handles OAuth2 authentication requests.
dao: Contains Data Access Object (DAO) classes for database operations.
├── ArticleDao.java: Performs database operations for articles.
├── GeneralUserDao.java: Performs database operations for general users.
entity: Contains entity classes representing database tables.
├── Article.java: Represents the Article table.
├── GeneralUser.java: Represents the GeneralUser table.
service: Contains service classes for business logic.
├── ArticleService.java: Interface for article-related services.
├── GeneralUserService.java: Interface for general user-related services.
└── Impl: Contains service implementations.
├── ArticleServiceImpl.java: Implements the ArticleService interface.
└── GeneralUserServiceImpl.java: Implements the GeneralUserService interface.
utils: Contains various utility classes.
├── CloudNoteContract.java: Utility for working with CloudNote contracts.
├── DateUtil.java: Utility for date-related operations.
├── MD5Util.java: Utility for MD5 hashing.
├── NumberUtil.java: Utility for number-related operations.
├── PageResult.java: Represents paginated results.
├── PageUtil.java: Utility for pagination operations.
├── SystemUtil.java: Utility for system-related operations.
└── Web3jClient.java: Utility for interacting with the Ethereum blockchain using Web3j.