https://github.com/alphazee09/alphazee_09_backend
https://github.com/alphazee09/alphazee_09_backend
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/alphazee09/alphazee_09_backend
- Owner: alphazee09
- Created: 2025-06-19T05:38:52.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-19T05:40:07.000Z (about 1 year ago)
- Last Synced: 2025-06-19T06:31:39.756Z (about 1 year ago)
- Size: 0 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AlphaZee Client Platform - Backend Implementation
## Overview
This is a complete backend implementation for the AlphaZee Client Platform, built with Flask and PostgreSQL. The backend provides a comprehensive API for managing clients, projects, contracts, payments, and communication.
## Features Implemented
### 🔐 Authentication & User Management
- User registration and login with JWT tokens
- Password reset functionality
- Identity verification with ID card and signature uploads
- Role-based access control (Admin/Client)
- Session management
### 📋 Project Management
- Project submission with automatic account creation
- Project status tracking and milestone management
- File uploads and project documentation
- Project type categorization
- Progress tracking and reporting
### 📄 Contract Management
- Contract creation and digital signing
- Contract lifecycle management (draft → sent → signed → active → completed)
- Digital signature verification
- Contract expiration handling
- PDF generation support
### 💳 Payment Processing
- Stripe payment integration
- Invoice generation and management
- Payment tracking and history
- Milestone-based payments
- Tax calculation
### 💬 Communication System
- Messaging between clients and admin
- Real-time notifications
- Message threading and replies
- File attachments support
### 👨💼 Admin Panel
- User management and verification
- Project oversight and status updates
- Contract and payment management
- System analytics and reporting
- Activity logging
## Technology Stack
- **Framework**: Flask 3.1.1
- **Database**: PostgreSQL with SQLAlchemy ORM
- **Authentication**: Flask-JWT-Extended
- **Migrations**: Flask-Migrate
- **Email**: Flask-Mail
- **File Storage**: Local storage with AWS S3 support
- **Payments**: Stripe integration
- **CORS**: Flask-CORS
## Database Schema
The database includes the following main tables:
- `users` - User accounts and profiles
- `identity_verifications` - Identity verification data
- `projects` - Project information and status
- `project_types` - Project categorization
- `project_milestones` - Project milestone tracking
- `project_files` - File attachments
- `contracts` - Contract management
- `contract_signatures` - Digital signatures
- `payments` - Payment transactions
- `invoices` - Invoice management
- `messages` - Communication system
- `notifications` - User notifications
- `activity_logs` - System activity tracking
## API Endpoints
### Authentication (`/api/auth`)
- `POST /register` - User registration
- `POST /login` - User login
- `POST /logout` - User logout
- `POST /refresh` - Refresh JWT token
- `POST /forgot-password` - Request password reset
- `POST /reset-password` - Reset password
### Users (`/api/users`)
- `GET /profile` - Get user profile
- `PUT /profile` - Update user profile
- `POST /upload-avatar` - Upload profile picture
- `POST /verify-identity` - Submit identity verification
- `GET /verification-status` - Check verification status
### Projects (`/api/projects`)
- `GET /types` - Get project types
- `POST /submit` - Submit new project (public endpoint)
- `GET /` - Get user projects
- `GET /{id}` - Get project details
- `PUT /{id}/status` - Update project status (admin)
- `GET /{id}/milestones` - Get project milestones
- `POST /{id}/milestones` - Create milestone (admin)
- `PUT /{id}/milestones/{milestone_id}/complete` - Complete milestone (admin)
- `GET /{id}/files` - Get project files
- `POST /{id}/files` - Upload project file
### Contracts (`/api/contracts`)
- `GET /` - Get contracts
- `GET /{id}` - Get contract details
- `POST /` - Create contract (admin)
- `PUT /{id}/send` - Send contract to client (admin)
- `POST /{id}/sign` - Sign contract
- `PUT /{id}/activate` - Activate contract (admin)
- `PUT /{id}/complete` - Complete contract (admin)
### Payments (`/api/payments`)
- `GET /` - Get payments
- `GET /{id}` - Get payment details
- `POST /` - Create payment request (admin)
- `POST /{id}/process` - Process payment
- `POST /{id}/intent` - Create Stripe payment intent
- `POST /{id}/confirm` - Confirm payment
- `GET /invoices` - Get invoices
- `POST /invoices` - Create invoice (admin)
### Messages (`/api/messages`)
- `GET /` - Get messages
- `GET /{id}` - Get message details
- `POST /` - Send message
- `POST /{id}/reply` - Reply to message
- `PUT /{id}/read` - Mark message as read
- `GET /unread-count` - Get unread message count
- `GET /notifications` - Get notifications
- `PUT /notifications/{id}/read` - Mark notification as read
### Files (`/api/files`)
- `POST /upload` - Upload general file
- `GET /download/{path}` - Download file
- `GET /info/{path}` - Get file information
- `DELETE /delete/{path}` - Delete file
### Admin (`/api/admin`)
- `GET /dashboard` - Get admin dashboard
- `GET /users` - Get all users
- `GET /users/{id}` - Get user details
- `PUT /users/{id}/status` - Update user status
- `PUT /users/{id}/verification` - Update verification status
- `GET /project-types` - Manage project types
- `POST /project-types` - Create project type
- `GET /activity-logs` - Get activity logs
- `POST /system/cleanup` - System cleanup
- `POST /system/broadcast` - Broadcast message
## Installation & Setup
### Prerequisites
- Python 3.11+
- PostgreSQL 14+
- Virtual environment
### 1. Clone and Setup
```bash
cd alphazee_backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
```
### 2. Database Setup
```bash
# Install PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib
# Start PostgreSQL
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Create database and user
sudo -u postgres createdb alphazee_db
sudo -u postgres psql -c "CREATE USER alphazee_user WITH PASSWORD 'alphazee_password';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE alphazee_db TO alphazee_user;"
sudo -u postgres psql -c "ALTER USER alphazee_user CREATEDB;"
```
### 3. Environment Configuration
```bash
cp .env.example .env
# Edit .env file with your configuration
```
### 4. Database Migration
```bash
export FLASK_APP=src/main.py
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
```
### 5. Run Application
```bash
python src/main.py
```
The application will be available at `http://localhost:5000`
## Environment Variables
```env
# Flask Configuration
SECRET_KEY=your-secret-key-here
JWT_SECRET_KEY=your-jwt-secret-key-here
# Database Configuration
DATABASE_URL=postgresql://alphazee_user:alphazee_password@localhost/alphazee_db
# Email Configuration
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USE_TLS=true
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_DEFAULT_SENDER=noreply@alphazee.com
# Stripe Configuration
STRIPE_PUBLISHABLE_KEY=pk_test_your-stripe-publishable-key
STRIPE_SECRET_KEY=sk_test_your-stripe-secret-key
# Application URLs
FRONTEND_URL=http://localhost:5173
BACKEND_URL=http://localhost:5000
# CORS Configuration
CORS_ORIGINS=http://localhost:5173,http://localhost:3000
```
## Production Deployment
### Using Gunicorn
```bash
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 src.main:app
```
### Using Docker
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "src.main:app"]
```
### Environment Setup for Production
- Set `DEBUG=False`
- Use strong secret keys
- Configure proper database credentials
- Set up SSL/TLS certificates
- Configure email server
- Set up Stripe production keys
- Configure file storage (AWS S3 recommended)
## Security Features
- JWT token-based authentication
- Password hashing with bcrypt
- CORS protection
- SQL injection prevention with SQLAlchemy ORM
- File upload validation
- Rate limiting (can be added with Flask-Limiter)
- Input validation and sanitization
## File Storage
The system supports both local file storage and AWS S3:
### Local Storage
Files are stored in the `uploads/` directory with organized subdirectories:
- `avatars/` - User profile pictures
- `identity/front_id/` - Front ID card images
- `identity/back_id/` - Back ID card images
- `identity/signatures/` - Digital signatures
- `projects/{project_id}/` - Project files
- `contracts/{contract_id}/signatures/` - Contract signatures
### AWS S3 Storage
Configure AWS credentials in environment variables to use S3 storage.
## Testing
The application includes comprehensive error handling and logging. Test the API endpoints using:
```bash
# Health check
curl http://localhost:5000/api/health
# Test project types endpoint
curl http://localhost:5000/api/projects/types
```
## Monitoring & Logging
- Application logs are written to console and can be redirected to files
- Activity logging tracks all user actions
- Database queries are logged in debug mode
- Error handling with proper HTTP status codes
## Support
For issues or questions regarding the backend implementation, please refer to the code comments and documentation within each module.
## License
This backend implementation is proprietary software for AlphaZee Client Platform.