"Git-like sequence proof for physical world workflows"
A web application for multi-vendor coordination with cryptographic proof of work sequence and timing. Perfect for event planning, construction projects, and any multi-step workflow that requires vendor coordination.
- Node.js 18+
- npm or yarn
- Git
One command to rule them all:
git clone <your-repo>
cd gitdone
./quick-start.shThat's it! ๐ Your app will be running at http://localhost:3000
For more control and options:
git clone <your-repo>
cd gitdone
./dev.shThis gives you a menu with options to:
- ๐ Start/Stop servers
- ๐ Check status
- ๐ View logs
- ๐งช Test application
- ๐ฆ Install dependencies
- โ๏ธ Setup environment
๐ See docs/DEVELOPMENT.md for complete development guide
- Clone and setup
git clone <your-repo>
cd gitdone- Install dependencies
# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm install- Configure environment
# Copy environment template
cp .env.example .env
# Edit .env with your settings
nano .env- Start the application
# Terminal 1 - Backend
cd backend
npm start
# Terminal 2 - Frontend
cd frontend
npm run dev- Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- Event Creation: Create events with sequential or non-sequential workflows
- Step Management: Add multiple steps with vendor assignments
- Magic Links: Secure JWT-based links for vendor access
- File Upload: Support for images, videos, and documents
- File Processing: Automatic image compression with Sharp
- Git Integration: Each step completion creates a Git commit
- Real-time Dashboard: Track progress and send reminders
- Vendor Interface: Mobile-optimized completion interface
- Read-only Views: Public access for clients/stakeholders
Sequential Flow (A โ B โ C)
- Steps must be completed in order
- Next step unlocks when previous completes
- Git commits form linear chain
Non-Sequential Flow (A, B, C)
- Steps can complete independently
- All steps must finish for event completion
- Git commits form tree structure
- Frontend: Next.js 15 + TypeScript + Tailwind CSS
- Backend: Node.js + Express
- Storage: JSON files + Git repositories
- Email: SMTP via Nodemailer (Gmail, Outlook, SendGrid, etc.)
- Auth: JWT magic links
- File Processing: Sharp (images) + fluent-ffmpeg (videos)
gitdone/
โโโ backend/ # Express API server
โ โโโ routes/ # API endpoints
โ โโโ utils/ # Git manager, file processing
โ โโโ middleware/ # File upload, security
โ โโโ server.js # Main server file
โโโ frontend/ # Next.js application
โ โโโ src/app/ # App router pages
โ โโโ package.json # Frontend dependencies
โโโ data/ # Data storage
โ โโโ events/ # Event JSON files
โ โโโ uploads/ # Uploaded files
โ โโโ git_repos/ # Git repositories
โ โโโ magic_tokens.json # Token tracking
โโโ .env # Environment configuration
POST /api/events- Create new eventGET /api/events/:id- Get event detailsGET /api/events/:id/timeline- Get event timelinePOST /api/events/:id/steps- Add step to event
POST /api/magic/send- Send magic link to vendorPOST /api/magic/send-all- Send links to all pending stepsGET /api/magic/status/:token- Check token status
GET /api/complete/:token- Validate magic linkPOST /api/complete/:token- Complete step with files
GET /api/view/:eventId- Read-only event viewGET /api/view/:eventId/export- Export event dataGET /api/view/:eventId/files/:fileName- Serve uploaded files
# Server
PORT=3001
NODE_ENV=development
BASE_URL=http://localhost:3000
FRONTEND_URL=http://localhost:3000
# Email (SMTP Configuration)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your@gmail.com
SMTP_PASS=your-app-password
SMTP_FROM=your@gmail.com
# Security
JWT_SECRET=your-super-secret-jwt-key
ENCRYPTION_KEY=your-encryption-key
# File Limits
MAX_FILE_SIZE=26214400 # 25MB
MAX_FILES_PER_REQUEST=10
# Data Storage
DATA_PATH=./data
EVENTS_PATH=./data/events
UPLOADS_PATH=./data/uploads
GIT_REPOS_PATH=./data/git_reposOption 1: Gmail (Recommended for Development)
- Enable 2-factor authentication on your Gmail account
- Generate an "App Password" at https://myaccount.google.com/apppasswords
- Update
.env:SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=your@gmail.com SMTP_PASS=your-16-char-app-password # No spaces SMTP_FROM=your@gmail.com - Test:
cd backend && node test-email.js
Option 2: Other Providers
- Outlook:
smtp-mail.outlook.com:587 - Yahoo:
smtp.mail.yahoo.com:587 - SendGrid:
smtp.sendgrid.net:587(recommended for production) - Custom SMTP: Any SMTP server with TLS support
๐ง See docs/EMAIL_SETUP.md for detailed configuration guide
curl -X POST http://localhost:3001/api/events \
-H "Content-Type: application/json" \
-d '{
"name": "Wedding Setup",
"owner_email": "planner@example.com",
"flow_type": "sequential",
"steps": [
{
"name": "Venue Setup",
"vendor_email": "venue@example.com",
"description": "Setup tables, chairs, decor"
},
{
"name": "Catering Ready",
"vendor_email": "catering@example.com",
"description": "Prepare food and beverages"
}
]
}'curl -X POST http://localhost:3001/api/magic/send \
-H "Content-Type: application/json" \
-d '{
"event_id": "event-id-here",
"step_id": "step-id-here",
"vendor_email": "vendor@example.com"
}'curl -X POST http://localhost:3001/api/complete/token-here \
-F "files=@photo1.jpg" \
-F "files=@photo2.jpg" \
-F "comments=Venue setup complete with 50 tables"- JWT Magic Links: Secure, time-limited access tokens
- Email Binding: Tokens tied to specific vendor emails
- File Validation: Type and size restrictions
- CORS Protection: Configured for production domains
- Input Sanitization: All user inputs validated
Each step completion creates a Git commit with:
- Step metadata (JSON)
- Uploaded files
- Completion comments
- Timestamp and vendor info
Git repositories are stored in data/git_repos/{eventId}/ and can be:
- Cloned for external access
- Used for audit trails
- Integrated with CI/CD systems
Prerequisites:
- Ubuntu 20.04+ or similar Linux distribution
- Node.js 18+ installed
- Domain name pointed to your VPS (optional)
Quick VPS Setup:
# 1. Clone repository on VPS
git clone <your-repo> /var/www/gitdone
cd /var/www/gitdone
# 2. Copy .env file from local to VPS
# On local machine:
scp .env user@your-vps:/var/www/gitdone/.env
# 3. Run quick-start on VPS
./quick-start.sh- Environment Configuration
NODE_ENV=production
BASE_URL=https://your-domain.com
FRONTEND_URL=https://your-domain.com
# Email (Consider using SendGrid or transactional email service)
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USER=apikey
SMTP_PASS=your-sendgrid-api-key
SMTP_FROM=noreply@yourdomain.com- Build Frontend
cd frontend
npm run build- Process Management (PM2)
npm install -g pm2
pm2 start ecosystem.config.js
pm2 save
pm2 startup# Build and run with Docker Compose
docker-compose up -d๐ See DEPLOYMENT.md for comprehensive deployment guide
- Create event with multiple steps
- Send magic links to vendors
- Vendor completes step with file upload
- Event timeline updates in real-time
- Read-only view works without authentication
- File compression works for images
- Git commits are created for each completion
# Health check
curl http://localhost:3001/api/health
# Create test event
curl -X POST http://localhost:3001/api/events \
-H "Content-Type: application/json" \
-d '{"name":"Test","owner_email":"test@example.com","steps":[{"name":"Test Step","vendor_email":"vendor@example.com"}]}'Backend won't start
- Check if port 3001 is available
- Verify all dependencies are installed
- Check environment variables
Email not sending
- Verify SMTP credentials are correct (use app password for Gmail, not regular password)
- Check all SMTP_* variables in .env (HOST, PORT, USER, PASS, FROM)
- Ensure 2FA is enabled for Gmail accounts
- Clear shell environment variables:
unset SMTP_HOST SMTP_PORT SMTP_USER SMTP_PASS SMTP_FROM - Test with:
cd backend && node test-email.js - Check EMAIL_SETUP.md for detailed troubleshooting
File uploads failing
- Check file size limits in .env
- Verify uploads directory permissions
- Check file type restrictions
Frontend build errors
- Clear Next.js cache:
rm -rf .next - Reinstall dependencies:
rm -rf node_modules && npm install - Check TypeScript errors
- Video processing with FFmpeg
- Real-time notifications
- Advanced analytics dashboard
- Multi-language support
- Mobile app (React Native)
- Payment integration
- Team collaboration features
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - see LICENSE file for details
Complete documentation is available in the /docs directory:
- docs/README.md - Documentation navigation guide
- docs/00-context/system-state.md - System architecture and design decisions
- docs/04-process/development.md - Development workflow, scripts, and troubleshooting
- docs/04-process/deployment.md - VPS deployment guide with PM2, Nginx, and SSL
- docs/02-features/email-setup.md - Email provider configuration (Gmail, SendGrid, etc.)
- docs/02-features/environment.md - Environment variables and configuration management
- docs/02-features/api-reference.md - Complete API endpoint documentation
- docs/04-process/dev-workflow.md - Development workflows and testing strategies
Start here: docs/README.md
- Documentation: Check docs/README.md first
- Issues: Create GitHub issues for bugs
- Email: Contact the development team
GitDone - Making complex workflows simple and trackable! ๐