Quizlet clone (client side)
Many use Quizlet not just to memorize terms but also to learn by heart an entire question bank (multiple choice questions type). This project add one feature that Quizlet not currently have: the creator can add multiple options for each of their terms for learner to choose in learning mode.
- I use GraphQL.
- I use Prisma as an ORM due to its easy-to-use API and its ability to work seamlessly with Typescript.
- For the client side, I use Next.js with Apollo.
- For the server side, I use Nest.js.
- I use GraphQL because it is easy to build-and-use API with the support of Prisma.
- I didn't use a state management library like Redux or MobX because I already use Apollo complete with its own cache system.
- I use Material UI instead of custom module CSS because I don't have time to build the feel and look of each individual component.
- I didn't build this application with Docker or Kubernetes in mind or use microservices architecture because hosting a Kubernetes app will cost money.
- Set up CI/CD integration
- Write some integration and system testing
- Add support for Docker and Kubernetes
$ npm installFirst, you must create an .env.local file that host 2 environment variables NEXT_PUBLIC_SERVER_URL and NEXT_PUBLIC_WS_SERVER_URL. It's something like this:
NEXT_PUBLIC_SERVER_URL=http://localhost:4000/graphql
NEXT_PUBLIC_WS_SERVER_URL=ws://localhost:4000/graphql
Now, you can run the development server:
npm run dev
# or
yarn devOpen http://localhost:3000 with your browser to see the result.
npm run generatenpm run build
# then
npm run start