A comprehensive full-stack engineering project management platform built with React, Express.js, and PostgreSQL. This system provides contract-driven engineering management with advanced features for project tracking, GIS mapping, AI-powered inspections, file management, and detailed reporting.
- Contract Management: Create, edit, and track engineering contracts with detailed client information
- Project Tracking: Manage projects linked to contracts with progress monitoring and status updates
- File Management: Secure file upload and organization with contract-based folder structure
- GIS Integration: Interactive mapping with coordinate storage and site visualization
- AI Inspections: Upload images for AI-powered defect detection and analysis
- Comprehensive Reporting: Generate detailed reports across all project data
- Cross-Page Data Flow: Seamless data sharing between all platform sections
- Real-time Updates: Live data synchronization across all pages
- Responsive Design: Mobile-friendly interface that works on all devices
- Type-Safe Development: Full TypeScript implementation for reliability
- Database Integration: PostgreSQL with Drizzle ORM for robust data management
- Authentication Ready: Built-in user context system for multi-user support
- Error Handling: Comprehensive error management with user-friendly messages
- Framework: React 18 with TypeScript
- Build Tool: Vite for fast development and optimized production builds
- UI Library: Tailwind CSS with shadcn/ui components for professional design
- State Management: TanStack Query for server state, React Context for global state
- Routing: Wouter for lightweight client-side routing
- Forms: React Hook Form with Zod validation
- Runtime: Node.js with Express.js framework
- Language: TypeScript with ES modules
- Database: PostgreSQL with Drizzle ORM
- File Handling: Multer for file uploads (20MB limit)
- API Design: RESTful API with comprehensive error handling
- Development: Hot reload with Vite integration
-- Contracts: Main contract entities
contracts (id, contract_number, client_name, project_name, start_date, end_date, contract_value, status, description, created_at, updated_at)
-- Contract Files: File attachments linked to contracts
contract_files (id, contract_id, file_name, file_path, file_size, file_type, created_at)
-- Projects: Project entities linked to contracts
projects (id, contract_id, name, description, status, progress, start_date, end_date, coordinates, created_at, updated_at)
-- Inspections: AI inspection records
inspections (id, contract_id, project_id, image_path, analysis_results, defects_found, confidence, notes, created_at, updated_at)- Node.js 18+
- PostgreSQL 14+
- npm or yarn package manager
Create a .env file in the root directory:
DATABASE_URL=postgresql://username:password@hostname:5432/database_name
NODE_ENV=development
PORT=5000- Create a new Supabase project
- Go to Settings β Database
- Copy the connection string from "Connection pooling"
- Replace
[YOUR-PASSWORD]with your database password - Use this as your
DATABASE_URL
# Clone the repository
git clone <repository-url>
cd engineering-platform
# Install dependencies
npm install
# Push database schema
npm run db:push
# Start development server
npm run dev# Build both frontend and backend
npm run build
# Start production server
npm start- Dashboard: Overview of all contracts, projects, and key metrics
- Contracts: Create and manage engineering contracts
- Projects: Track project progress and manage tasks
- GIS Mapping: Interactive maps with coordinate tracking
- AI Inspections: Upload images for automated defect detection
- File Manager: Organize and share project files
- Reports: Generate comprehensive project reports
- Create a new contract with client details and project information
- Set contract value, dates, and status
- Add projects under the contract
- Upload relevant files and documents
- Conduct AI inspections with image analysis
- Track progress and generate reports
- Drag and drop files for easy upload
- Automatic organization by contract
- Support for PDF, DOC, and image files
- File sharing with external stakeholders
- Version control and access logging
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components
β β βββ contexts/ # React contexts
β β βββ hooks/ # Custom hooks
β β βββ lib/ # Utility libraries
βββ server/ # Backend Express application
β βββ routes.ts # API route definitions
β βββ storage.ts # Database operations
β βββ index.ts # Server entry point
βββ shared/ # Shared TypeScript types
β βββ schema.ts # Database schema and types
βββ uploads/ # File upload directory
- ContractContext: Global state management for active contracts
- Storage Interface: Abstraction layer for database operations
- API Routes: RESTful endpoints for all operations
- UI Components: Professional shadcn/ui component library
- File Upload: Drag-and-drop file handling with progress tracking
npm run dev # Start development server
npm run build # Build for production
npm run db:push # Update database schema
npm run db:studio # Open database studio- Input validation with Zod schemas
- File type and size restrictions
- SQL injection prevention with parameterized queries
- CORS protection for API endpoints
- Environment variable security
- Error handling without sensitive data exposure
- Optimized database queries with proper indexing
- Lazy loading for large datasets
- Image optimization for inspections
- Caching strategies for frequently accessed data
- Minimal bundle size with tree shaking
- Connect your repository to Replit
- Set environment variables in Replit Secrets
- Deploy using Replit's one-click deployment
- Build the application:
npm run build - Set production environment variables
- Deploy to your preferred hosting platform
- Ensure PostgreSQL database is accessible
- Error logging and monitoring
- Performance metrics tracking
- User activity analytics
- Database query optimization
- File upload statistics
- Database Connection: Verify DATABASE_URL format and credentials
- File Uploads: Check upload directory permissions and file size limits
- Build Errors: Ensure all dependencies are installed correctly
- Port Conflicts: Change PORT environment variable if needed
For technical support or feature requests, please refer to the project documentation or contact the development team.
Built with β€οΈ for professional engineering project management.