Skip to content

Database Schema: Carbon Print

← Back to Main Page

1. Collections

1.1. Users

Collection that stores user data, login credentials, and history of activity.

Field Type Description
_id ObjectId Unique identifier for the user (Primary Key)
username String Unique username
email String User's email (also unique)
cpf String User's CPF (also unique)
password String Hashed and salted password
addess String User's CEP
phoneNumber String User's phone number
createdAt Date Date of account creation
lastLogin Date Last login timestamp (optional)
role String User's role (e.g., user, admin) for permissions
wasteSaved Number Total waste saved by the user in kilograms (optional)
carbonCredit Number Total carbon credits earned by the user (optional)
totalPickups Number Total number of pickups completed by the user (optional)

Note: Could the user's CPF be used as the primary identifier?

Authentication:
JWT tokens are issued upon successful login and used to authorize API requests.


1.2. Waste Collection

Collection that stores information about waste registered for pickup.

Field Type Description
_id ObjectId Unique identifier for the waste item (Primary Key)
userId ObjectId Reference to the user who registered the waste (Foreign Key)
type String Type of waste (e.g., Metal, Plastic)
amount Number Amount of waste in kilograms
comment String Optional comment from the user
image String Image file path or URL
location GeoJSON Location details in GeoJSON format (latitude, longitude)
status String Status of the waste (e.g., registered, picked up)
pickupScheduledAt Date Scheduled date and time for pickup

1.3. Pickups

Collection that stores scheduled waste pickups and their progress.

Field Type Description
_id ObjectId Unique identifier for the pickup (Primary Key)
wasteId ObjectId Reference to the waste item being picked up (Foreign Key)
userId ObjectId Reference to the user who registered the waste (Foreign Key)
pickupBy ObjectId Reference to the user who accepted the pickup (Foreign Key)
pickupStatus String Status of the pickup (e.g., pending, completed, canceled)
confirmedAt Date Timestamp when the pickup was confirmed
completedAt Date Timestamp when the pickup was completed

2. Relationships

  1. Users ↔ Waste Collection:
  2. One user can register multiple waste items.
  3. One-to-many relationship.

  4. Waste Collection ↔ Pickups:

  5. Each waste item is associated with a single pickup.
  6. One-to-one relationship.

  7. Users ↔ Pickups:

  8. Users can act as both generators and collectors of waste.
  9. One-to-many relationship (as pickup requesters or executors).

3. Example Entity-Relationship Diagram (ERD)

  Users
  +---------------------------+
  | _id (PK)                  |
  | username                  |
  | email                     |
  | cpf                       |
  | ...                       |
  +---------------------------+
          |
          | 1
          |
          | N
  +---------------------------+
  | Waste Collection          |
  |---------------------------|
  | _id (PK)                  |
  | userId (FK)               |
  | type                      |
  | ...                       |
  +---------------------------+
          |
          | 1
          |
          | 1
  +---------------------------+
  | Pickups                   |
  |---------------------------|
  | _id (PK)                  |
  | wasteId (FK)              |
  | userId (FK)               |
  | pickupBy (FK)             |
  +---------------------------+

4. Field Explanations

  • PK (Primary Key) : Uniquely identifies each document in the collection.
  • FK (Foreign Key) : References another collection’s primary field.

Revision History

Date Version Changes Authors
2025-03-28 0.1 Document creation Cainã Freitas and Lucas Antunes
2025-04-06 0.2 Add ecolink database schema Mateus Vieira

← Back to Main Page