software_architecture
software_architecture
# Users Table
CREATE TABLE Users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE,
password VARCHAR(255),
role ENUM('customer', 'employee', 'admin', 'marketing') NOT NULL
);
# Leads Table
CREATE TABLE Leads (
id SERIAL PRIMARY KEY,
customer_id INT REFERENCES Users(id),
status ENUM('cold', 'warm', 'hot', 'converted') DEFAULT 'cold',
created_by INT REFERENCES Users(id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
# Jobs Table
CREATE TABLE Jobs (
id SERIAL PRIMARY KEY,
title VARCHAR(255),
description TEXT,
customer_id INT REFERENCES Users(id),
assigned_to INT REFERENCES Users(id),
status ENUM('pending', 'in_progress', 'completed', 'invoiced') DEFAULT
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
# Invoices Table
CREATE TABLE Invoices (
id SERIAL PRIMARY KEY,
job_id INT REFERENCES Jobs(id),
customer_id INT REFERENCES Users(id),
amount DECIMAL(10,2),
status ENUM('pending', 'paid') DEFAULT 'pending',
payment_details TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
## Lead Management
POST /api/leads --> Create a new lead
GET /api/leads --> List all leads
PUT /api/leads/{id} --> Update lead status
## Job Management
POST /api/jobs --> Create a job
GET /api/jobs --> List jobs
PUT /api/jobs/{id} --> Update job status
## Messaging System
POST /api/messages --> Send message
GET /api/messages/{job_id} --> Get chat history for a job
## Invoicing
POST /api/invoices --> Generate an invoice
GET /api/invoices --> List invoices
PUT /api/invoices/{id} --> Update invoice status