docs: add detailed mermaid diagrams for db, backend and marketplace
This commit is contained in:
parent
6b23d05383
commit
89036d7b39
3 changed files with 248 additions and 0 deletions
91
backend/README.md
Normal file
91
backend/README.md
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
# SaveInMed Backend API
|
||||||
|
|
||||||
|
This service handles the core business logic, data persistence, and external integrations for the SaveInMed B2B Marketplace.
|
||||||
|
|
||||||
|
## 🏗 Architecture
|
||||||
|
|
||||||
|
The backend follows a layered architecture to ensure separation of concerns and maintainability.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD
|
||||||
|
%% Clients
|
||||||
|
Client([Client Application])
|
||||||
|
|
||||||
|
%% Entry Point
|
||||||
|
subgraph "API Layer"
|
||||||
|
Router[Router / Middleware]
|
||||||
|
AuthH[Auth Handler]
|
||||||
|
UserH[User Handler]
|
||||||
|
ProdH[Product Handler]
|
||||||
|
CartH[Cart Handler]
|
||||||
|
OrderH[Order Handler]
|
||||||
|
PayH[Payment Handler]
|
||||||
|
ShipH[Shipping Handler]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Business Logic
|
||||||
|
subgraph "Service Layer"
|
||||||
|
AuthS[Auth Service]
|
||||||
|
UserS[User Service]
|
||||||
|
ProdS[Catalog Service]
|
||||||
|
OrderS[Order Service]
|
||||||
|
PayS[Payment Service]
|
||||||
|
ShipS[Shipping Service]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Data / Infra
|
||||||
|
subgraph "Infrastructure Layer"
|
||||||
|
DB[(PostgreSQL)]
|
||||||
|
MP[Mercado Pago Adapter]
|
||||||
|
Asaas[Asaas Adapter]
|
||||||
|
Stripe[Stripe Adapter]
|
||||||
|
Mapbox[Mapbox Service]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Flows
|
||||||
|
Client --> Router
|
||||||
|
Router --> AuthH
|
||||||
|
Router --> UserH
|
||||||
|
Router --> ProdH
|
||||||
|
Router --> CartH
|
||||||
|
Router --> OrderH
|
||||||
|
Router --> PayH
|
||||||
|
Router --> ShipH
|
||||||
|
|
||||||
|
AuthH --> AuthS
|
||||||
|
UserH --> UserS
|
||||||
|
ProdH --> ProdS
|
||||||
|
CartH --> OrderS
|
||||||
|
OrderH --> OrderS
|
||||||
|
PayH --> PayS
|
||||||
|
ShipH --> ShipS
|
||||||
|
|
||||||
|
AuthS --> DB
|
||||||
|
UserS --> DB
|
||||||
|
ProdS --> DB
|
||||||
|
OrderS --> DB
|
||||||
|
|
||||||
|
PayS --> MP
|
||||||
|
PayS --> Asaas
|
||||||
|
PayS --> Stripe
|
||||||
|
|
||||||
|
ShipS --> Mapbox
|
||||||
|
|
||||||
|
%% Styling
|
||||||
|
style Client fill:#f9f,stroke:#333
|
||||||
|
style Router fill:#ff9,stroke:#333
|
||||||
|
style DB fill:#94a3b8,stroke:#333
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠 Tech Stack
|
||||||
|
- **Language**: Go 1.24+
|
||||||
|
- **Framework**: Standard Library + Chi/Mux (inferred)
|
||||||
|
- **Database**: PostgreSQL
|
||||||
|
- **Docs**: Swagger/OpenAPI
|
||||||
|
|
||||||
|
## 🚀 Key Features
|
||||||
|
- High-performance REST API
|
||||||
|
- JWT Authentication
|
||||||
|
- Role-Based Access Control
|
||||||
|
- Payment Gateway Integration (Mercado Pago, Asaas, Stripe)
|
||||||
|
- Real-time Inventory Management
|
||||||
66
docs/DATABASE_SCHEMA.md
Normal file
66
docs/DATABASE_SCHEMA.md
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Database Schema
|
||||||
|
|
||||||
|
This document visualizes the SaveInMed database schema using Mermaid.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
erDiagram
|
||||||
|
%% Entities
|
||||||
|
COMPANY {
|
||||||
|
int id pk
|
||||||
|
string name
|
||||||
|
enum status "ACTIVE | INACTIVE | SUSPENDED"
|
||||||
|
datetime createdAt
|
||||||
|
datetime updatedAt
|
||||||
|
}
|
||||||
|
|
||||||
|
USER {
|
||||||
|
int id pk
|
||||||
|
string email uk
|
||||||
|
string password
|
||||||
|
string name
|
||||||
|
enum role "USER | ADMIN"
|
||||||
|
int companyId fk
|
||||||
|
string refreshToken
|
||||||
|
datetime createdAt
|
||||||
|
datetime updatedAt
|
||||||
|
}
|
||||||
|
|
||||||
|
PRODUCT {
|
||||||
|
int id pk
|
||||||
|
string name
|
||||||
|
string sku uk
|
||||||
|
decimal price "10,2"
|
||||||
|
datetime createdAt
|
||||||
|
datetime updatedAt
|
||||||
|
}
|
||||||
|
|
||||||
|
INVENTORY_ITEM {
|
||||||
|
int id pk
|
||||||
|
int productId fk, uk
|
||||||
|
int quantity
|
||||||
|
datetime updatedAt
|
||||||
|
}
|
||||||
|
|
||||||
|
ORDER {
|
||||||
|
int id pk
|
||||||
|
int buyerId fk
|
||||||
|
int productId fk
|
||||||
|
int quantity
|
||||||
|
decimal total "12,2"
|
||||||
|
datetime createdAt
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSTEM_SETTINGS {
|
||||||
|
string key pk
|
||||||
|
string value
|
||||||
|
string category "default: GENERAL"
|
||||||
|
boolean isSecure "default: false"
|
||||||
|
datetime updatedAt
|
||||||
|
}
|
||||||
|
|
||||||
|
%% Relationships
|
||||||
|
COMPANY ||--|{ USER : "has"
|
||||||
|
USER ||--|{ ORDER : "places"
|
||||||
|
PRODUCT ||--|| INVENTORY_ITEM : "has stock"
|
||||||
|
PRODUCT ||--|{ ORDER : "included in"
|
||||||
|
```
|
||||||
91
marketplace/README.md
Normal file
91
marketplace/README.md
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
# SaveInMed Marketplace Frontend
|
||||||
|
|
||||||
|
The Marketplace is the customer-facing B2B application where pharmacies purchase products from distributors.
|
||||||
|
|
||||||
|
## 🏗 Architecture
|
||||||
|
|
||||||
|
The frontend is built with React and Vite, utilizing a component-based architecture state management.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph TD
|
||||||
|
%% User
|
||||||
|
User((User))
|
||||||
|
|
||||||
|
%% Core
|
||||||
|
subgraph "Application Core"
|
||||||
|
App[App Root]
|
||||||
|
Router[React Router]
|
||||||
|
Store[Zustand Store]
|
||||||
|
Query[TanStack Query]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Pages
|
||||||
|
subgraph "Pages / Routes"
|
||||||
|
LoginP[Login/Auth]
|
||||||
|
HomeP[Home / Catalog]
|
||||||
|
ProdP[Product Details]
|
||||||
|
CartP[Shopping Cart]
|
||||||
|
CheckoutP[Checkout]
|
||||||
|
ProfileP[User Profile]
|
||||||
|
OrdersP[Order History]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Feature Components
|
||||||
|
subgraph "Smart Components"
|
||||||
|
AuthForm[Auth Forms]
|
||||||
|
ProdGrid[Product Grid]
|
||||||
|
CartWidget[Cart Widget]
|
||||||
|
PayWidget[Payment Widget]
|
||||||
|
AddressForm[Address Manager]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% API Layer
|
||||||
|
subgraph "API Integration"
|
||||||
|
API[API Client (Axios)]
|
||||||
|
Backend[Backend API]
|
||||||
|
end
|
||||||
|
|
||||||
|
%% Flow
|
||||||
|
User --> App
|
||||||
|
App --> Router
|
||||||
|
App --> Store
|
||||||
|
|
||||||
|
Router --> LoginP
|
||||||
|
Router --> HomeP
|
||||||
|
Router --> ProdP
|
||||||
|
Router --> CartP
|
||||||
|
Router --> CheckoutP
|
||||||
|
Router --> ProfileP
|
||||||
|
Router --> OrdersP
|
||||||
|
|
||||||
|
HomeP --> ProdGrid
|
||||||
|
CartP --> CartWidget
|
||||||
|
CheckoutP --> PayWidget
|
||||||
|
CheckoutP --> AddressForm
|
||||||
|
|
||||||
|
ProdGrid --> Store
|
||||||
|
CartWidget --> Store
|
||||||
|
PayWidget --> Store
|
||||||
|
|
||||||
|
Store --> API
|
||||||
|
Query --> API
|
||||||
|
API --> Backend
|
||||||
|
|
||||||
|
%% Styling
|
||||||
|
style User fill:#f9f,stroke:#333,stroke-width:2px
|
||||||
|
style Backend fill:#f87171,stroke:#333,stroke-width:2px
|
||||||
|
style Store fill:#60a5fa,stroke:#333
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🛠 Tech Stack
|
||||||
|
- **Framework**: React 18 + Vite
|
||||||
|
- **Styling**: TailwindCSS
|
||||||
|
- **State**: Zustand + TanStack Query
|
||||||
|
- **Routing**: React Router DOM
|
||||||
|
- **HTTP**: Axios
|
||||||
|
|
||||||
|
## 📦 Key Modules
|
||||||
|
- **Authentication**: JWT-based login and session management
|
||||||
|
- **Catalog**: Virtualized product lists with search and filter
|
||||||
|
- **Checkout**: Multi-step checkout with payment integration
|
||||||
|
- **Dashboard**: User order history and status tracking
|
||||||
Loading…
Reference in a new issue