A professional, AI-powered construction estimation tool with mobile-friendly chat interface and comprehensive PDF report generation.
- π€ AI-Powered Chat Interface - Natural conversation using Claude 3.5 Sonnet
- π Comprehensive Estimates - Labor, materials, equipment, permits, and timeline
- π Professional PDF Reports - Detailed breakdowns with supplier information
- π¦ Inventory Management - Real-time material availability checking
- π Equipment Suggestions - Automated equipment rental recommendations
- π± Mobile Responsive - Perfect for demos on phones and tablets
- β‘ Demo Mode - Works without API key for testing and demonstrations
- π¨ Modern UI - Clean, professional interface with smooth animations
- Node.js 16.x or higher
- npm or yarn
- Anthropic API key (optional - demo mode available)
-
Clone the repository
git clone https://github.com/YOUR_USERNAME/estimator-web-app.git cd estimator-web-app -
Install dependencies
npm install
-
Configure environment variables
cp .env.example .env
Edit
.envand add your Anthropic API key (or skip for demo mode):ANTHROPIC_API_KEY=sk-ant-your-api-key-here PORT=3000
-
Start the server
npm start
-
Access the application
- Local: http://localhost:3000
- Network: http://YOUR_IP_ADDRESS:3000
- Open the application in your browser
- Type: "I need an estimate for building a 600 sqft pool"
- Answer the AI's questions about your project details
- Click "Generate Full Estimate" to see comprehensive breakdown
- Download professional PDF report
- Check inventory availability
The app automatically runs in Demo Mode if no API key is provided. This mode:
- β Provides structured conversation flow
- β Generates full estimates with calculations
- β Creates PDF reports
- β Perfect for demonstrations and testing
To enable AI features, add your Anthropic API key to .env
estimator-web-app/
βββ public/
β βββ index.html # Main chat interface
β βββ styles.css # Responsive styling
β βββ app.js # Frontend JavaScript
β βββ test.html # Connection test page
βββ server.js # Express server & API endpoints
βββ package.json # Dependencies
βββ .env # Environment variables
βββ .env.example # Environment template
βββ .gitignore # Git ignore rules
βββ README.md # This file
βββ QUICK_START.md # Quick setup guide
βββ TROUBLESHOOTING.md # Common issues & solutions
βββ ALLOW_FIREWALL.bat # Windows firewall helper
Each estimate includes:
- Excavation work
- Concrete/structural work
- Plumbing installation
- Electrical systems
- Finishing work
- Quantities and unit prices
- Supplier recommendations
- Total material costs
- Delivery considerations
- Required equipment list
- Daily rental rates
- Duration estimates
- Supplier contacts
- Building permits
- Electrical permits
- Plumbing permits
- Pool-specific permits
- Processing timelines
- Total project duration
- Phase-by-phase breakdown
- Critical milestones
- Inspection schedules
- Complete materials list
- Quantities needed
- Stock availability
- Lead times
Beautiful, mobile-responsive chat interface for natural project discussions.
Comprehensive cost breakdown with all project details.
Professional PDF reports ready for client presentation.
Edit server.js and modify the constructionData object:
const constructionData = {
labor: {
excavation: { rate: 45, unit: 'hour' },
// Add more labor types...
},
materials: {
concrete: {
price: 150,
unit: 'cubic yard',
supplier: 'Your Supplier'
},
// Add more materials...
},
equipment: {
excavator: {
price: 350,
unit: 'day',
supplier: 'Equipment Co'
},
// Add more equipment...
}
};The calculation engine in calculateEstimate() can be extended to support:
- Residential construction
- Commercial projects
- Renovations & remodeling
- Foundation work
- Deck construction
- And more!
-
Find your computer's IP address:
# Windows ipconfig # Mac/Linux ifconfig
-
Allow firewall connections (Windows):
- Right-click
ALLOW_FIREWALL.bat - Select "Run as Administrator"
Or manually:
netsh advfirewall firewall add rule name="Estimator App" dir=in action=allow protocol=TCP localport=3000 - Right-click
-
Access from phone:
- Connect phone to same WiFi network
- Open browser and go to:
http://YOUR_IP:3000
- Backend: Node.js, Express.js
- AI: Anthropic Claude 3.5 Sonnet
- PDF Generation: PDFKit
- Frontend: Vanilla JavaScript, CSS3, HTML5
- Architecture: RESTful API, Session-based state
- API keys stored in
.env(never committed) - CORS enabled for development
- Session-based architecture (no persistent storage)
- Input validation on all endpoints
Handle conversational messages and gather project details.
Request:
{
"message": "I need an estimate for a pool",
"sessionId": "session_123"
}Response:
{
"response": "I'd be happy to help! What's the size...",
"canGenerateEstimate": false
}Generate comprehensive project estimate.
Request:
{
"sessionId": "session_123"
}Response:
{
"estimate": { /* full estimate data */ },
"projectData": { /* extracted project details */ }
}Create downloadable PDF report.
Request:
{
"estimate": { /* estimate data */ },
"projectData": { /* project details */ }
}Response: PDF file download
Check material availability.
Request:
{
"items": [{ "name": "Concrete", "quantity": 10 }]
}Response:
{
"inventory": [
{
"name": "Concrete",
"inStock": true,
"availableQuantity": 500,
"leadTime": "In stock"
}
]
}See TROUBLESHOOTING.md for detailed solutions to common issues.
Quick fixes:
- Can't connect from phone? Run
ALLOW_FIREWALL.batas Administrator - API errors? Check
.envfile for valid API key (or use demo mode) - Server won't start? Make sure port 3000 is available
For production use:
- Set
NODE_ENV=production - Use a process manager (PM2, Forever)
- Set up SSL/HTTPS
- Use Redis for session storage
- Implement rate limiting
- Add authentication for multi-user access
# Dockerfile example
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your 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
- User authentication and project history
- Database integration (PostgreSQL/MongoDB)
- Email PDF reports to clients
- Real inventory system integration
- Multi-language support
- Advanced project templates
- Cost comparison tools
- Client portal with project tracking
- Mobile app (React Native)
- Real-time collaboration features
This project is licensed under the MIT License - see the LICENSE file for details.
JRodAmazing
- Heavy Iron Consults
- Built with β€οΈ for construction professionals
- Built with Anthropic Claude for AI capabilities
- Express.js for the backend framework
- PDFKit for PDF generation
- Font icons and inspiration from modern web design trends
For issues, questions, or feature requests:
- Open an issue on GitHub
- Check TROUBLESHOOTING.md
- Review QUICK_START.md
β Star this repo if you find it helpful!
Made with π¨ by JRodAmazing | Β© 2025 Heavy Iron Consults