← Projects

Ice-queb

02/2024 - 05/2024

Tech Stack:

https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/docker/docker-original.svg
https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/express/express-original.svg
https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/mongodb/mongodb-original.svg
https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/nodejs/nodejs-original.svg
https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/socketio/socketio-original.svg
https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/typescript/typescript-original.svg

Description: A robust REST and WebSocket API for managing office hour


This is the back-end server of the project that handles request from both the student-end interface and teacher-end interface for office hour queuing app. A couple of things I learned from this project:

  • How to use socket.io to create a real-time communication between the server and client
  • How to create a REST API using Express using TypeScript
  • How to organize the codespace using the Model Router Controller (MRC) pattern
  • How to set up a testing environment using Jest + Supertest + MongoDB-memory-server
  • How to create a dockerized app
  • How to set up EC2 instance on AWS
  • How to use custom middleware to handle error
  • How to write robust API documentation using Notion
  • How to set up JSON Web Token (JWT) for authentication
  • How to use Ngrok to expose the local server to the public
  • How to set up a HTTPS server using self-signed certificate
  • How to use Zod to validate the request body
  • How to write a yml file to run the Github Action for test automation
  • How to use eslint and prettier to format the code
  • Better understanding of the Docker, Dockerfile