A comprehensive full-stack platform for managing client projects, automated quotations, and seamless project delivery
Features • Tech Stack • Installation • Documentation • Demo
- Overview
- Features
- Tech Stack
- Architecture
- Installation
- Configuration
- Usage
- API Documentation
- Screenshots
- Project Structure
- Contributing
- License
ProjectPort is an intelligent project management and client interaction platform designed to streamline the entire project lifecycle—from initial inquiry to final delivery. Built for development agencies, freelancers, and project-based businesses, it bridges the gap between clients and development teams with powerful automation and real-time collaboration features.
- 👥 Clients: Submit project inquiries, receive instant quotations, track progress, manage payments
- ⚙️ Admins: Manage leads, convert inquiries to projects, assign teams, oversee delivery
- 👨💻 Developers: Access assigned tasks, update progress, collaborate with teams (coming soon)
-
📋 Dynamic Project Wizard
- Multi-step intelligent form with dependent inputs
- Real-time price calculation based on selections
- Support for web, mobile, e-commerce, and custom projects
-
💰 Automated Quotation Engine
- Excel-driven pricing rules → JSON configuration
- Instant cost estimation with detailed breakdowns
- Customizable pricing models
-
🔄 Complete Lead Management
- Capture inquiries with detailed requirements
- Review and qualify leads
- One-click conversion to active projects
- Automated client account creation
-
📊 Comprehensive Dashboards
- Client Dashboard: Project overview, real-time status, payment tracking
- Admin Dashboard: Business analytics, lead pipeline, project monitoring
- Real-time notifications and updates
-
🎯 Project Management
- Milestone tracking with progress indicators
- Payment schedules and invoice management
- Document sharing and collaboration
- Status updates and activity logs
-
🔔 Smart Notifications
- Real-time in-app notifications
- Email alerts for critical events
- Customizable notification preferences
-
🔒 Security & Authentication
- JWT-based authentication
- Role-based access control (RBAC)
- Secure password hashing with bcrypt
- Protected API endpoints
- SEO Optimized: Complete on-page and technical SEO implementation
- PWA Ready: Progressive Web App with offline capabilities
- Responsive Design: Mobile-first, works on all devices
- Performance Optimized: Lazy loading, code splitting, caching strategies
- Framework: React 18.2.0 with Vite
- Styling: Tailwind CSS 3.x
- Routing: React Router v6
- State Management: React Hooks & Context API
- HTTP Client: Fetch API
- SEO: React Helmet Async
- Icons: Lucide React
- Form Handling: Custom validation
- Runtime: Node.js 20.x
- Framework: Express.js 4.x
- Database: MySQL 8.0
- Authentication: JWT (jsonwebtoken)
- Password Hashing: bcrypt.js
- Environment: dotenv
- Security: CORS, Helmet (recommended)
- Version Control: Git & GitHub
- Package Manager: npm
- Code Quality: ESLint, Prettier
- Deployment: Vercel (Frontend), Railway/Render (Backend)
- Database Hosting: PlanetScale, AWS RDS, or local MySQL
ProjectPort/
│
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── layout/ # Layout components (Header, Footer)
│ │ ├── utils/ # Utility functions & configs
│ │ └── assets/ # Static assets
│ └── public/ # Public files (manifest, icons, sitemaps)
│
├── server/ # Backend Node.js application
│ ├── index.js # Main server file with all routes
│ ├── db.js # Database connection
│ ├── utils/ # Utility functions
│ └── .env # Environment variables
│
└── database/ # Database schemas and migrations
└── schema.sql # Complete database structure
Client Request → React Router → Page Component → API Call →
Express Route → Auth Middleware → Database Query →
Response → State Update → UI Render
- Node.js: v18.x or higher
- MySQL: v8.0 or higher
- npm: v9.x or higher
- Git: Latest version
git clone https://github.com/aryanony/ProjectPort.git
cd ProjectPort- Create MySQL Database:
mysql -u root -p- Run the Schema:
CREATE DATABASE projectport CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE projectport;
source database_schema.sql;- Verify Installation:
SHOW TABLES;
SELECT * FROM users;cd server
npm installCreate .env file:
PORT=4000
CLIENT_ORIGIN=http://localhost:5173
JWT_SECRET=your-super-secret-jwt-key-change-in-production
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=projectport
DB_PORT=3306Start the server:
npm run dev
# or
node index.jsServer runs at: http://localhost:4000
cd client
npm installCreate .env (optional):
VITE_API_URL=http://localhost:4000Start the development server:
npm run devApplication runs at: http://localhost:5173
cd server
node utils/generateSitemap.jsThis generates:
client/public/sitemap.xmlclient/public/sitemap.html
# Server Configuration
PORT=4000
CLIENT_ORIGIN=http://localhost:5173
# Security
JWT_SECRET=your-jwt-secret-minimum-32-characters
NODE_ENV=development
# Database
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=projectport
DB_PORT=3306
# Optional: Email Service (for notifications)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-passwordVITE_API_URL=http://localhost:4000
VITE_SITE_URL=http://localhost:5173After running the database schema:
Admin Account:
- Email:
admin@projectport.com - Password:
admin123
Demo Client Account:
- Email:
client@gmail.com - Password:
client123
-
Start a Project:
- Visit
/start-project - Choose project type (Web, Mobile, E-commerce, Custom)
- Fill in requirements through the wizard
- Get instant quotation
- Submit inquiry
- Visit
-
Track Projects:
- Register/Login to your account
- View all projects on dashboard
- Track milestones and progress
- Manage payments
- Communicate with the team
-
Manage Leads:
- View new inquiries at
/admin/leads - Review project details and quotations
- Convert leads to active projects
- Assign to development team
- View new inquiries at
-
Manage Projects:
- Monitor all projects at
/admin/projects - Update project status
- Add milestones and payments
- Send updates to clients
- Track team assignments
- Monitor all projects at
POST /api/auth/register
Content-Type: application/json
{
"email": "user@example.com",
"password": "securepassword",
"full_name": "John Doe",
"phone": "1234567890",
"company": "Tech Corp"
}POST /api/auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "securepassword"
}GET /api/auth/me
Authorization: Bearer {token}POST /api/leads
Content-Type: application/json
{
"projectName": "E-commerce Website",
"name": "John Doe",
"email": "john@example.com",
"phone": "1234567890",
"company": "ABC Corp",
"typeKey": "ecommerce",
"typeLabel": "E-commerce Website",
"description": "Need an online store",
"budget": 50000,
...
}GET /api/leads
Authorization: Bearer {admin_token}POST /api/leads/:id/convert
Authorization: Bearer {admin_token}
Content-Type: application/json
{
"password": "clientpassword"
}GET /api/projects
Authorization: Bearer {token}GET /api/projects/:id
Authorization: Bearer {token}PATCH /api/projects/:id
Authorization: Bearer {admin_token}
Content-Type: application/json
{
"status": "in_progress",
"priority": "high"
}POST /api/projects/:id/milestones
Authorization: Bearer {admin_token}
Content-Type: application/json
{
"title": "Design Phase Complete",
"description": "All mockups approved",
"due_date": "2025-12-31"
}POST /api/projects/:id/payments
Authorization: Bearer {admin_token}
Content-Type: application/json
{
"amount": 20000,
"payment_type": "advance",
"due_date": "2025-12-15",
"status": "pending"
}GET /api/notifications
Authorization: Bearer {token}PATCH /api/notifications/:id/read
Authorization: Bearer {token}Click to expand screenshots
ProjectPort/
│
├── client/ # Frontend Application
│ ├── public/
│ │ ├── manifest.json # PWA manifest
│ │ ├── robots.txt # SEO robots file
│ │ ├── sitemap.xml # XML sitemap
│ │ ├── sitemap.html # HTML sitemap
│ │ └── icons/ # PWA icons
│ │
│ ├── src/
│ │ ├── components/
│ │ │ ├── SEO.jsx # SEO component
│ │ │ ├── ProjectForm.jsx # Multi-step form
│ │ │ ├── ProjectTypeCard.jsx # Project type selector
│ │ │ ├── SidebarPricing.jsx # Real-time pricing
│ │ │ └── RecentSubmissions.jsx
│ │ │
│ │ ├── pages/
│ │ │ ├── Landing.jsx # Home page
│ │ │ ├── Login.jsx # Authentication
│ │ │ ├── Register.jsx
│ │ │ ├── ClientConsole.jsx # Project wizard
│ │ │ ├── ClientDashboard.jsx # Client overview
│ │ │ ├── ClientProjects.jsx # Project list
│ │ │ ├── ClientProjectDetail.jsx
│ │ │ ├── AdminDashboard.jsx # Admin overview
│ │ │ ├── AdminLeads.jsx # Lead management
│ │ │ ├── AdminProjects.jsx # Project management
│ │ │ └── AdminProjectDetail.jsx
│ │ │
│ │ ├── layout/
│ │ │ ├── Header.jsx # Navigation
│ │ │ └── Footer.jsx
│ │ │
│ │ ├── utils/
│ │ │ ├── seo.config.js # SEO configuration
│ │ │ └── api.js # API helpers
│ │ │
│ │ ├── App.jsx # Main app component
│ │ ├── main.jsx # Entry point
│ │ └── global.css # Global styles
│ │
│ ├── package.json
│ └── vite.config.js
│
├── server/ # Backend Application
│ ├── utils/
│ │ └── generateSitemap.js # Sitemap generator
│ │
│ ├── index.js # Main server & routes
│ ├── db.js # Database connection
│ ├── .env # Environment config
│ └── package.json
│
├── database/
│ └── schema.sql # Database structure
│
├── README.md # This file
├── CLIENT_README.md # Frontend documentation
├── SERVER_README.md # Backend documentation
└── .gitignore
- Authentication: JWT-based with httpOnly cookies option
- Password Security: bcrypt hashing with salt rounds
- SQL Injection: Parameterized queries with mysql2
- XSS Protection: Input sanitization and validation
- CORS: Configured for specific origins
- Rate Limiting: Recommended for production
- Environment Variables: Sensitive data stored securely
- Change default passwords immediately
- Use strong JWT secrets (minimum 32 characters)
- Enable HTTPS in production
- Implement rate limiting on API endpoints
- Regular security audits with
npm audit - Keep dependencies updated
- Use environment-specific configs
- Push code to GitHub
- Connect repository to Vercel
- Configure environment variables
- Deploy automatically on push
- Push code to GitHub
- Connect to Railway/Render
- Add environment variables
- Configure MySQL database
- Deploy
- Create database instance
- Run schema migrations
- Update backend .env with connection details
- Enable SSL connections
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow existing code style
- Write clear commit messages
- Add comments for complex logic
- Test thoroughly before submitting
- Update documentation as needed
- No email notifications (SMTP integration planned)
- File uploads not yet implemented
- Payment gateway integration pending
- Mobile app version in planning
- Email notification system
- File upload and document management
- Payment gateway integration (Razorpay/Stripe)
- Advanced analytics dashboard
- Team collaboration features
- Mobile application (React Native)
- Multi-language support
- Dark mode
- Export reports (PDF/Excel)
This project is licensed under the MIT License - see the LICENSE file for details.
Aryan Gupta
- GitHub: @aryanony
- Email: admin@projectport.com
- Phone: +91-6205650368
- React community for excellent documentation
- Tailwind CSS for the utility-first CSS framework
- Express.js for the robust backend framework
- MySQL for reliable database management
- All open-source contributors
Need help? Reach out:
- 📧 Email: admin@projectport.com
- 📱 Phone: +91-6205650368
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
Made with ❤️ by Aryan Gupta
⭐ Star this repo if you find it helpful!






