MyAppCostEstimator.com is a comprehensive project estimation tool designed to help developers, agencies, and freelancers create accurate project estimates quickly and efficiently. Built with modern web technologies, MyAppCostEstimator.com streamlines the estimation process from initial client requirements to professional PDF proposals.
- Interactive Estimation Wizard: Step-by-step form to capture project requirements
- Feature Library: Pre-built library of common development features with estimated time requirements
- AI-Powered Estimates: Integration with OpenAI to generate intelligent project estimates
- Professional PDF Generation: Export estimates as professional PDF proposals
- Project Dashboard: Manage and track all your project estimates in one place
- User Authentication: Secure login with Firebase Authentication (including anonymous access)
- Real-time Data: Cloud storage with Firebase Firestore for seamless data management
- Responsive Design: Works perfectly on desktop and mobile devices
- Customizable Settings: Configure hourly rates and other estimation parameters
- Frontend: React 18, Remix, TypeScript
- Styling: Tailwind CSS
- Backend: Firebase (Firestore, Authentication)
- PDF Generation: @react-pdf/renderer
- AI Integration: OpenAI API
- State Management: Zustand
- Build Tool: Vite
- Deployment: Node.js compatible
-
Clone the repository
git clone https://github.com/NaimTheDev/scopecraft.git cd scopecraft -
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory with your Firebase and OpenAI credentials:VITE_FIREBASE_API_KEY=your_firebase_api_key VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain VITE_FIREBASE_PROJECT_ID=your_firebase_project_id VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id VITE_FIREBASE_APP_ID=your_firebase_app_id OPENAI_API_KEY=your_openai_api_key
-
Firebase Setup
- Create a Firebase project
- Enable Firestore and Authentication
- Add your web app configuration to the environment variables
Run the development server:
npm run devThis starts the MyAppCostEstimator.com development server on http://localhost:5173 with hot reloading enabled.
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run typecheck- Run TypeScript type checkingnpm run lint- Run ESLint
- Authentication: Sign up for an account or use anonymous access
- Create New Estimate: Click "New Estimate" to start the estimation wizard
- Fill Project Details: Complete the multi-step form:
- Client request and project description
- Project type selection
- Feature selection from the library
- Timeline requirements
- Budget considerations and notes
- Generate Estimate: AI-powered estimation creates detailed project breakdown
- Review & Export: View the estimate summary and export as PDF
- Manage Projects: Access all estimates from the dashboard
npm run buildnpm startThe built application includes:
build/server- Server-side codebuild/client- Client-side assets
MyAppCostEstimator.com can be deployed to any Node.js hosting platform:
- Vercel: Zero-config deployment with automatic builds
- Netlify: JAMstack deployment with serverless functions
- Railway: Simple railway.app deployment
- DigitalOcean App Platform: Container-based deployment
- Traditional VPS: Any server with Node.js support
Make sure to set your environment variables in your hosting platform's configuration.
MyAppCostEstimator.com requires Firebase for:
- Authentication: User login and anonymous access
- Firestore: Project data storage
- Security Rules: Configure appropriate read/write permissions
Ensure your Firestore security rules allow authenticated users to read/write their own data.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, please open an issue on GitHub or contact the development team.