Skip to content

API for project management, which has various functionalities related to projects, teams, objectives and much more.

License

Notifications You must be signed in to change notification settings

hebertzin/API-project-management

Repository files navigation

API for project management

Build Status

project description

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.

technologies used

  • 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.

system modeling

modelagem-sistema

Features

Authentication / security

  • 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

User

  • It is possible to create an account
  • It is possible to find an account by ID
  • It is possible to delete an account

Profile

  • It is possible to have a profile
  • it is possible to find a profile by ID

Projects

  • 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

Project ideas

  • 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

Project questions

  • 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

Project objectives

  • 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

Project decisions

  • 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

Project updates

  • 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

Teams

  • 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

Relationships

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.

conclusion

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.

contact

email: hebertsantosdeveloper@gmail.com

linkedin: https://www.linkedin.com/in/hebert-santos-241429243/

site : https://ihebert.vercel.app/