This is a collaborative online coding platform. The idea is initiated from some code challenge sites like LeetCode, which provides a user a coding text area but no availability for multiple users' collaboration. In this application, collaboration is enabled via socket.io to allow multiple users to synchronize their work over the same problem and Redis to cache their partial works. In a high-level view, this project uses Angular2 for the front end, Node.js for the web server and a Python written backend server to connect Docker container to execute the code any user submits.
- System lists all the problems
- User views a problem's details
- User adds a new problem
- User toggles between navigations on top nav bar to route to pages
- System provides an editing panel on each problem detail page
- Multiple users simultaneously edits a problem
- User submits a solution to a problem and System outputs the result
- Understood and mastered the core of JavaScript, such as callback functions and Promise.
- Learned the currently popular frontend framework Angular2; used Angular CLI to build a Single Page Application.
- Understood how Node.js works.
- Mastered the RESTful API design, which is an important data transmission method between Client and Server
- Learned the NoSQL theory and used MongoDB for data storage
- Utilized key-value data store Redis for caching
- Did research on WebSocket
- [] Learned the basic usage of Docker and was able to use Docker to execute the code user submitted
- [] Learned Python3 and used it to develop the backend server