A modern, serverless MVP built with DaisyUI + Tailwind CSS for the frontend, Google Apps Script for the backend API, Google Sheets for the database, and Looker Studio for analytics.
| Layer | Technology |
|---|---|
| Frontend | DaisyUI + Tailwind CSS + Vanilla JavaScript |
| Hosting | GitHub Pages |
| Backend | Google Apps Script (serverless REST API) |
| Database | Google Sheets |
| Analytics | Looker Studio |
worldpulse/
├── index.html # Main HTML page
├── js/
│ └── main.js # Frontend JavaScript
├── css/
│ └── custom.css # Custom styles (optional)
├── docs/
│ ├── GOOGLE_APPS_SCRIPT.md # Backend setup guide
│ └── ANALYTICS_SETUP.md # Analytics configuration
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Pages deployment
└── README.md # This file
- GitHub account
- Google account (for Apps Script, Sheets, and Looker Studio)
git clone https://github.com/YOUR_USERNAME/worldpulse.git
cd worldpulse-
Follow GOOGLE_APPS_SCRIPT.md to:
- Create Google Sheets database
- Set up Google Apps Script
- Deploy as web app
- Get your API URL
-
Update
js/main.jswith your API URL:const API_BASE_URL = 'YOUR_GOOGLE_APPS_SCRIPT_URL';
git add .
git commit -m "Initial commit"
git push origin main- Go to repository Settings → Pages
- Select
mainbranch as source - Your site will be live at
https://YOUR_USERNAME.github.io/worldpulse/
Follow ANALYTICS_SETUP.md to create dashboards in Looker Studio.
✅ Fully Responsive: Works on mobile, tablet, and desktop
✅ No Backend Server: All logic runs serverless
✅ Real-time Database: Google Sheets synced data
✅ Easy Analytics: Looker Studio dashboards
✅ Auto-deployed: GitHub Pages with CI/CD
✅ Accessible: DaisyUI components are WCAG compliant
-
Install a local web server:
python -m http.server 8000
-
Open
http://localhost:8000in your browser
- Edit HTML, CSS, or JavaScript files
- Commit and push to
mainbranch - GitHub Actions automatically deploys to GitHub Pages
DaisyUI comes with pre-built components:
- Buttons, cards, modals, forms
- Navigation, dropdowns, menus
- Alerts, toasts, notifications
- And more...
See DaisyUI documentation for available components.
GET /exec?action=getDataResponse:
[
{
"id": "uuid-1",
"title": "Item 1",
"description": "Description",
"timestamp": "2026-02-03"
}
]POST /exec
{
"action": "addData",
"title": "New Item",
"description": "Description"
}POST /exec
{
"action": "updateData",
"id": "uuid-1",
"title": "Updated Title"
}POST /exec
{
"action": "deleteData",
"id": "uuid-1"
}See GOOGLE_APPS_SCRIPT.md for detailed implementation.
- Google Apps Script deployed with Web App URL
- API URL added to
js/main.js - Google Sheet database configured
- GitHub repository created and pushed
- GitHub Pages enabled
- Looker Studio dashboard created
- Custom domain configured (optional)
- Minimize API Calls: Cache data when possible
- Optimize Sheets: Archive old data, use filters
- CDN Resources: DaisyUI and Tailwind CSS loaded from CDN
- Lazy Loading: Load components only when needed
- Add authentication layer
- Use environment variables for API keys
- Validate all inputs in Apps Script
- Implement rate limiting
| Issue | Solution |
|---|---|
| API returns 404 | Check API URL in js/main.js matches deployment |
| CORS errors | Ensure Apps Script headers are set correctly |
| Sheets not updating | Verify Sheet ID and Sheet Name in Apps Script |
| GitHub Pages not deploying | Check .github/workflows/deploy.yml |
| Looker Studio can't connect | Verify Google Sheet is not restricted to private |
- Frontend Hosting: FREE (GitHub Pages)
- Backend: FREE (Google Apps Script)
- Database: FREE (Google Sheets)
- Analytics: FREE (Looker Studio free tier)
Total Cost: $0 for MVP
- Add Authentication: Google Sign-in integration
- Custom Domain: Point domain to GitHub Pages
- Error Monitoring: Implement logging service
- Backup Strategy: Regular Google Sheets backups
- Scaling: Consider Firebase for larger datasets
- Paid Analytics: Upgrade Looker Studio if needed
MIT License - feel free to use this as a template for your projects.
For issues or questions:
- Check documentation files in
/docs - Review GitHub Issues
- Create a new issue with detailed description
Built with ❤️ for rapid MVP development