This is in principle a very challenging project as it involves many tables and many relationships, developed from the beginning, starting with data modeling, then it was time to choose the technologies, I chose to develop with nestjs because it is robust and because I wanted to learn more about it, I used Postgres as the database.
- Nest js - Framework based on node js.
- typescript - By default, nest already comes with typescript.
- Prisma - ORM for relational databases.
- Postgres - Relational database.
- Docker – Containers to upload the database
- Husky - For commit routine, for example. Before making a commit, run tests or format the code.
- Prettier - To format the code and follow a pattern throughout the project
- dbdiagram - I used this software to model the data.
- Encrypt user passwords
- Send email to confirm account
- Validate email confirmation with token and change status in the database
- Email notifications
- Email templates in project
- Auth with github
- Reset password
- 2fa auth
- It is possible to create an account
- It is possible to find an account by ID
- It is possible to delete an account
- It is possible to have a profile
- it is possible to find a profile by ID
- User can create a project
- User can list a project by ID
- User can list all his projects
- User can delete a project
- User can follow projects
- User can stop following projects
- It is possibel create a project idea
- It is possibel delete a project idea
- It is possible update a project idea
- It is possible to find all project ideas that you created
- User can add questions for a given project
- User edit questions for a given project
- User can delete questions from a given project
- User can list all his created questions
- User can add objectives for a given project
- User edit objectives for a given project
- User can delete objectives from a given project
- User can list all his created goals
- User can add decisions to a given project
- User can update decisions for a given project
- User can delete decisions for a given project
- User can list a decision by ID
- User can list all his decisions
- User can add updates to a given project
- User can edit updates to a given project
- User can delete updates to a given project
- User can list an update by ID
- User can list all their updates
- User can create a team
- User can list a team by ID
- User can delete a team
- User can edit team data
- User can invite participants by email
This is a project where there are several relationships which is really cool, besides being challenging, you get a lot of learning with relational databases.
You can see all the relationships in the schema.prisma file, I also provided a diagram where all the tables and relationships are.
It's been a challenging project and good for my evolution as a developer, I'm facing several challenges, solving them and acquiring a lot of knowledge.
email: hebertsantosdeveloper@gmail.com
linkedin: https://www.linkedin.com/in/hebert-santos-241429243/
site : https://ihebert.vercel.app/