mareddie / quizae Goto Github PK
View Code? Open in Web Editor NEWMy personal trivia app
License: MIT License
My personal trivia app
License: MIT License
Ability to log User out (destroy the session and remember me cookie (if present)
Transactions are used in data layer right now, but there are a few issues with them:
After this consideration, transactions don't bring much of the benefit for this scenario. Rewrite parts of the application to stop using that mechanism.
Change data layer for game session and progress, that now uses types instead of Prisma models. This will ensure better developer experience while streamlining the whole schema.
Create a suite of e2e tests for the application. Tests should cover all available endpoints, correct output, and authorization.
Create a scalable layout. The base should be handled via SSR in Handlebars.
The tests should cover a business logic only, everything else should be mocked.
Use Nest testing library and bootstrap classes via testing module.
Implement an ability to CRUD Working Groups. Working Group has N Users.
Next, implement an ability to CRUD quiz questions. The question can have N answers, and only one should be correct (for the sake of simplicity)
The CRUDs should be accessible only after login. The answers are bound to a group, not a user.
Create a page where an authenticated User can change their settings
I've had enough of MongoDB for toying, and I don't feel like it adds a value to my system. It'd be for the best to switch it for conventional SQL database.
Write a brief documentation for this project instead of boilerplate of NestJS framework text.
It should contain some info about software architecture and considerations, info about domains base domains, and how to run a project.
The Quizae Project has a few moving parts, and it would be for better (even for CI/CD) to have the infrastructure in separate directory.
At the time of writing, this would include:
There should be a GitHub actions for CI - running linters, tests, building of image, push of image.
Research Portainer docs on how to do CD as well (service redeploy on push)
They will be bound to Group, same as Questions.
Every Question can have one Category, while one Category can have multiple question (and only one Group). This will be later used for Game Session.
Refactor backend to be fully stateless without any templating, just API. This should speed up development and lead to better separation of concerns and less coupling in the project
There will be new domain (both Presentation and Application-layer) called GameSession.
Game Sessions are bound to Groups, and every GS can have N Players.
Every Player should have a nickname and points count and is bound only to a single Game. Player doesn't have any credentials, it's bound to this new domain.
When the Game is initiated, all questions should be loaded to the Game - there should be a model for it. When the underlying Group / Question are deleted, the Game should be deleted as well. Anyone from the Group can start a Game.
Next, the first Player's turn will begin and can select a Category (which will return a random Question from that category that is bound to the Game) and attempt to answer a Question. When the Question is answered, it will be processed:
After the Player answers, the Question is discarded from the game (so it cannot be answered again) and the next player's turn will begin.
The User Login functionality must be implemented. Requirements:
First, there's a lot of logic that is not needed, and can be reduced. I want to aim on more "personal" experience, there's no need to have groups for example, so let's get rid of them. The idea is half-baked and may be reintroduced in the future, but let's scrap it for now.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.