10 KiB
Delphi Consulting Group Database System
A modern Python web application built with FastAPI to replace the legacy Pascal-based database system. This system maintains the familiar keyboard shortcuts and workflows while providing a robust, modular backend with a clean web interface.
🏢 Company Information
Delphi Consulting Group Inc.
Modern database system for legal practice management, financial tracking, and document management.
🎯 Project Goals
- Replace legacy Pascal system with modern, maintainable technology
- Preserve keyboard shortcuts for user familiarity
- Fully modular system - easy to add/remove sections
- Backend-first approach with solid API endpoints
- Simple HTML with minimal JavaScript - prioritize reliability
- Single SQLite file for easy backup/restore
🛠️ Technology Stack
- Backend: Python 3.12, FastAPI, SQLAlchemy 2.0+
- Database: SQLite (single file)
- Frontend: Jinja2 templates, Bootstrap 5.3, vanilla JavaScript
- Authentication: JWT with bcrypt password hashing
- Validation: Pydantic v2
📊 Database Structure
Based on analysis of legacy Pascal system:
Core Tables
- ROLODEX - Customer/client information and contact details
- PHONE - Phone numbers linked to customers
- FILES - Legal cases/files with financial tracking
- LEDGER - Financial transactions per case
- QDROS - Legal documents (Qualified Domestic Relations Orders)
- USERS - System authentication and authorization
⌨️ Keyboard Shortcuts
Maintains legacy system shortcuts for user familiarity:
Navigation
Alt+C- Customers/RolodexAlt+F- File CabinetAlt+L- Ledger/FinancialAlt+D- Documents/QDROsAlt+A- Admin PanelCtrl+F- Global Search
Forms
Ctrl+N- New RecordCtrl+S- SaveF9- Edit ModeF2- Complete/SaveF8- Clear/CancelDel- Delete RecordEsc- Cancel/Close
Legacy Functions
F1- Help/ShortcutsF10- MenuAlt+M- Memo/NotesAlt+T- Time TrackerAlt+B- Balance Summary+/-- Change dates by day
🚀 Quick Start
Option 1: Docker (Recommended)
# Clone repository
git clone <repository-url>
cd delphi-database
# Set up secure configuration
python scripts/setup-security.py
# Development mode
docker-compose -f docker-compose.dev.yml up
# Production mode
docker-compose up -d
Option 2: Local Installation
# Install dependencies
pip install -r requirements.txt
# Create database and admin user
python create_admin.py
# Run application
python -m uvicorn app.main:app --reload
The application will be available at: http://localhost:6920
📖 For detailed Docker deployment instructions, see DOCKER.md
📁 Project Structure
delphi-database/
├── app/
│ ├── main.py # FastAPI application entry point
│ ├── config.py # Configuration settings
│ ├── models/ # SQLAlchemy database models
│ │ ├── user.py # User authentication
│ │ ├── rolodex.py # Customer/phone models
│ │ ├── files.py # File cabinet model
│ │ ├── ledger.py # Financial transactions
│ │ └── qdro.py # Legal documents
│ ├── api/ # API route handlers
│ │ ├── auth.py # Authentication endpoints
│ │ ├── customers.py # Customer management
│ │ ├── files.py # File management
│ │ ├── financial.py # Ledger/financial
│ │ ├── documents.py # Document management
│ │ ├── search.py # Search functionality
│ │ └── admin.py # Admin functions
│ ├── auth/ # Authentication system
│ ├── database/ # Database configuration
│ └── import_export/ # Data import/export utilities
├── templates/ # Jinja2 HTML templates
│ ├── base.html # Base template with nav/shortcuts
│ └── dashboard.html # Main dashboard
├── static/ # Static files (CSS, JS, images)
│ ├── css/main.css # Main stylesheet
│ ├── js/keyboard-shortcuts.js # Keyboard shortcut system
│ └── js/main.js # Main JavaScript utilities
├── old database/ # Legacy Pascal files (reference)
├── uploads/ # File uploads
├── backups/ # Database backups
├── requirements.txt # Python dependencies
├── create_admin.py # Admin user creation script
└── README.md # This file
🔧 API Endpoints
Authentication
POST /api/auth/login- User loginPOST /api/auth/register- Register user (admin only)GET /api/auth/me- Current user info
Customers (Rolodex)
GET /api/customers/- List customersPOST /api/customers/- Create customerGET /api/customers/{id}- Get customer detailsPUT /api/customers/{id}- Update customerDELETE /api/customers/{id}- Delete customerGET /api/customers/{id}/phones- Get phone numbersPOST /api/customers/{id}/phones- Add phone number
Files
GET /api/files/- List filesPOST /api/files/- Create fileGET /api/files/{file_no}- Get file detailsPUT /api/files/{file_no}- Update fileDELETE /api/files/{file_no}- Delete file
Financial (Ledger)
GET /api/financial/ledger/{file_no}- Get ledger entriesPOST /api/financial/ledger/- Create transactionPUT /api/financial/ledger/{id}- Update transactionDELETE /api/financial/ledger/{id}- Delete transactionGET /api/financial/reports/{file_no}- Financial reports
Documents (QDROs)
GET /api/documents/qdros/{file_no}- Get QDROs for filePOST /api/documents/qdros/- Create QDROGET /api/documents/qdros/{file_no}/{id}- Get specific QDROPUT /api/documents/qdros/{file_no}/{id}- Update QDRODELETE /api/documents/qdros/{file_no}/{id}- Delete QDRO
Search
GET /api/search/customers?q={query}- Search customersGET /api/search/files?q={query}- Search filesGET /api/search/global?q={query}- Global search
Admin
GET /api/admin/health- System health checkGET /api/admin/stats- System statisticsPOST /api/admin/import/csv- Import CSV dataGET /api/admin/export/{table}- Export table dataGET /api/admin/backup/download- Download database backup
🔒 Authentication
- Session-based JWT authentication
- Role-based access (User/Admin)
- Password hashing with bcrypt
- Token expiration and refresh
🗄️ Data Management
- CSV import/export functionality
- Database backup and restore
- Data validation and error handling
- Automatic financial calculations (matching legacy system)
⚙️ Configuration
Environment variables (create .env file):
# Database
DATABASE_URL=sqlite:///./delphi_database.db
# Security
SECRET_KEY=your-secret-key-change-in-production
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Application
DEBUG=False
APP_NAME=Delphi Consulting Group Database System
📋 Development Tasks
Phase 1 - Foundation ✅
- Project structure setup
- SQLAlchemy models based on legacy system
- Authentication system
- Core FastAPI application
Phase 2 - API Development ✅
- Customer management endpoints
- File management endpoints
- Financial/ledger endpoints
- Document management endpoints
- Search functionality
- Admin endpoints
Phase 3 - Frontend (In Progress)
- Base HTML template with keyboard shortcuts
- Dashboard interface
- Customer management UI
- File management UI
- Financial interface
- Document management UI
- Search interface
- Admin interface
Phase 4 - Data Migration
- Legacy .SC file parser
- Data cleaning and validation
- Migration scripts
- Data verification tools
Phase 5 - Advanced Features
- Financial calculations (matching legacy Tally_Ledger)
- Report generation
- Document templates
- Time tracking system
- Backup automation
🧪 Testing
# Run tests (when implemented)
pytest
# Run with coverage
pytest --cov=app tests/
🚢 Deployment
Docker Deployment (Recommended)
# Build and start services
docker-compose up -d
# With Nginx reverse proxy
docker-compose --profile production up -d
# Check status
docker-compose ps
Traditional Deployment
# With gunicorn for production
gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
📖 Complete deployment guide: DOCKER.md
🛡️ Security & Git Best Practices
🚨 NEVER Commit These Files:
.env- Contains secrets, passwords, API keys- Database files -
*.db,*.sqlite,delphi_database.db - Backup files -
backups/,*.backup,*.dump - Upload files -
uploads/, user documents - SSL certificates -
*.pem,*.key,*.crt - Local configs -
*-local.*,config.local.py
✅ Repository Security:
- Use
python scripts/setup-security.pyfor secure configuration - Install Git hooks:
./scripts/install-git-hooks.sh - Review
.gitignorebefore committing - Never commit real customer data
- Rotate secrets if accidentally committed
- Use environment variables for all sensitive data
🔒 Git Hooks Protection:
The pre-commit hook automatically blocks commits containing:
- Environment files (
.env) - Database files (
*.db,*.sqlite) - Backup files (
backups/,*.backup) - SSL certificates and keys (
*.pem,*.key) - Upload directories with user files
- Large files that may contain sensitive data
🤝 Contributing
- Follow the modular architecture principles
- Maintain keyboard shortcut compatibility
- Preserve legacy system workflows
- Ensure comprehensive error handling
- Document all API changes
- Review security checklist before commits
📄 License
Proprietary software for Delphi Consulting Group Inc.
📞 Support
For technical support or questions about this system, contact the development team.
Built with ❤️ for Delphi Consulting Group Inc.