This is a comprehensive financial management platform designed specifically for NGOs and non-profit organizations. The application provides complete budget tracking, expense management, donor grant oversight, project-based accounting, and financial reporting capabilities. Built with Django/Python backend and React/TypeScript frontend with a focus on transparency and audit compliance.
Current Status: Django backend infrastructure complete with comprehensive models, migrations, and API endpoints. All 9 core modules implemented with proper relationships and audit trails.
Preferred communication style: Simple, everyday language.
- Framework: React 18 with TypeScript
- Routing: Wouter for client-side routing
- UI Components: Radix UI primitives with shadcn/ui component library
- Styling: Tailwind CSS with CSS variables for theming
- State Management: TanStack Query (React Query) for server state
- Forms: React Hook Form with Zod validation
- Build Tool: Vite with TypeScript support
- Framework: Django 4.2 with Python 3.11
- Database ORM: Django ORM with PostgreSQL
- Authentication: Django built-in authentication with custom User model
- API Design: RESTful JSON API endpoints with Django views
- Architecture: Modular Django apps for each accounting function
- Session Management: Django sessions with database storage
- Database: PostgreSQL (via Neon Database serverless)
- Schema Management: Drizzle Kit for migrations
- Connection: Connection pooling with @neondatabase/serverless
- Structure: Normalized relational design with foreign key constraints
- Replit OpenID Connect integration for secure authentication
- Session-based authentication with PostgreSQL session storage
- Role-based access control (admin, finance, auditor, project_manager)
- Automatic session refresh and logout handling
- Authentication: Custom user model with roles (admin, finance, auditor, project_manager)
- Budgeting: Annual and project-specific budget creation with approval workflows
- Expenses: Detailed expense tracking with categorization and approval workflows
- Bank Accounts: Multi-account support with reconciliation and statement import features
- Donors: Donor management and grant tracking with conditionality and reporting obligations
- Projects: Project-based accounting with milestones, documents, and budget allocation
- General Ledger: Double-entry accounting system with chart of accounts and journal entries
- Audit Trail: Comprehensive activity logging for compliance with generic foreign keys
- Reports: Financial reporting with customizable templates and export capabilities
- Users: Authentication and role management
- Donors: Contact and relationship management
- Projects: Project lifecycle and budget tracking
- Budget Categories: Hierarchical expense categorization
- Budgets: Annual/project budgets with version control
- Bank Accounts: Multi-account financial tracking
- Expenses: Detailed expense records with approvals
- Ledger Entries: Double-entry accounting records
- Audit Trail: Immutable activity logs
- Responsive design with mobile-first approach
- Dark/light theme support via CSS variables
- Accessible components using Radix UI primitives
- Data tables with sorting, filtering, and pagination
- Interactive dashboards with metrics and charts
- Form validation with real-time feedback
- User initiates login via Replit Auth
- OpenID Connect handshake validates user identity
- Session created and stored in PostgreSQL
- User data synchronized with local user table
- Role-based permissions applied to API access
- Budget Creation: Categories → Budgets → Approval → Activation
- Expense Processing: Entry → Categorization → Approval → Ledger Recording
- Bank Reconciliation: Transaction Import → Matching → Reconciliation
- Reporting: Data Aggregation → Calculations → Visualization
- Client authentication check via session middleware
- Request validation using Zod schemas
- Database operations through Drizzle ORM
- Response formatting with error handling
- Audit trail logging for all modifications
- @neondatabase/serverless: PostgreSQL database connectivity
- drizzle-orm: Type-safe database operations
- @tanstack/react-query: Server state management
- @radix-ui/*: Accessible UI component primitives
- tailwindcss: Utility-first CSS framework
- react-hook-form: Form state management
- zod: Schema validation
- openid-client: OpenID Connect authentication
- passport: Authentication middleware
- express-session: Session management
- connect-pg-simple: PostgreSQL session store
- vite: Development server and build tool
- typescript: Type safety and tooling
- tsx: TypeScript execution for development
- esbuild: Production build optimization
- Vite development server with HMR
- Express server with middleware integration
- Database migrations via Drizzle Kit
- Environment-based configuration
- Frontend build via Vite (outputs to dist/public)
- Backend compilation via esbuild (outputs to dist/)
- Database schema deployment via Drizzle push
- Static file serving through Express
- DATABASE_URL: PostgreSQL connection string
- SESSION_SECRET: Session encryption key
- REPLIT_DOMAINS: Allowed authentication domains
- ISSUER_URL: OpenID Connect provider URL
- Connection pooling for database efficiency
- Session storage in PostgreSQL for horizontal scaling
- Static asset optimization through Vite
- API rate limiting and error handling
- Comprehensive audit logging for compliance
✓ Implemented comprehensive Django models for all 9 core modules
✓ Created proper foreign key relationships with resolved naming conflicts
✓ Generated and applied all database migrations successfully
✓ Set up Django admin interface with custom User model
✓ Created URL routing structure for all modules with placeholder views
✓ Established API endpoints returning JSON responses
✓ Created superuser account (admin/admin) for testing
✓ Added beautiful landing page template with system overview
✓ Confirmed Django server operational with API status endpoint working
→ Next: Integrate Django backend with existing React frontend → Next: Implement comprehensive business logic in Django views → Next: Create proper authentication flow between frontend and backend