A multi-dimensional UI system for organizing and visualizing ideas with different perspectives and relationships.
- Frontend: React + TypeScript + Vite
- Backend: Express.js + Node.js + TypeScript
- Database: Google Cloud Firestore (NoSQL)
- Hosting: Firebase Hosting (Frontend), Google Cloud Run (Backend)
- Testing: Playwright E2E tests
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β React App β β Express.js β β Cloud β
β (Frontend) βββββΊβ Backend βββββΊβ Firestore β
β β β (RESTful API) β β (Database) β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β β β
β ββββββββββββββββββββ β
βββββββββββββββΊβ Firebase Hosting β β
β (Static Assets) β β
ββββββββββββββββββββ β
β β
ββββββββββββββββββββ β
β Google Cloud Run ββββββββββββββββ
β (Backend Host) β
ββββββββββββββββββββ
- Node.js 18+ - JavaScript runtime
- npm - Package manager
- Git - Version control
- Firebase CLI - For Firestore emulator
# Install Node.js (if not already installed)
# Download from: https://nodejs.org/
# Install Firebase CLI globally
npm install -g firebase-tools
# Verify installations
node --version # Should be 18+
npm --version # Should be 6+
firebase --version # Should be 13+# Clone the repository
git clone https://github.com/your-username/idea-playground.git
cd idea-playground
# One-time automated setup (installs dependencies, sets up emulator, migrates data)
npm run setup# Login to Firebase (only needed for deployment)
firebase login
# Verify project connection
firebase projects:list
# Should show: idea-playground-1f730# Start full development environment
npm run dev
# This starts:
# - Frontend: http://localhost:3000
# - Backend: http://localhost:8080
# - Firestore Emulator: http://localhost:8080
# - Emulator UI: http://localhost:4000| Command | Description |
|---|---|
npm run setup |
One-time automated setup |
npm run dev |
Start full development environment |
npm run dev:frontend |
Frontend only |
npm run dev:backend |
Backend only |
npm run dev:emulator |
Firestore emulator only |
npm run build |
Build frontend + backend for production |
npm run build:frontend |
Build frontend for production |
npm run build:backend |
Build backend for production |
npm test |
Run Playwright tests |
npm run test:ui |
Run tests with UI |
npm run backup |
Backup production data |
npm run deploy |
Deploy to Google Cloud Run + Firebase Hosting |
- β Express.js backend - Standard Node.js debugging
- β Firestore emulator - Isolated development data
- β Real-time development - Hot reload for frontend and backend
- β No external dependencies - Everything runs locally
# Start everything with one command
npm run dev
# Individual services
npm run dev:frontend # React app only
npm run dev:backend # Express.js API only
npm run dev:emulator # Firestore emulator only- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Firestore Emulator: http://localhost:8080
- Firebase UI: http://localhost:4000
# Run all tests (headless)
npm test
# Run tests with browser UI
npm run test:ui
# Run tests with detailed output
npm test -- --reporter=list- 23 E2E tests covering all features
- Playwright for browser automation
- Automatic screenshots on failures
- Cross-browser testing support
Error: listen EADDRINUSE: address already in use :::8080Solution:
# Kill processes using the port
lsof -ti:8080 | xargs kill -9
# Or use different ports in the setup
# Verify
java -versionError: Could not start Hosting Emulator, port takenSolution:
# Use production backend instead
npm run dev:client
# OR kill processes using ports
lsof -ti:5000 | xargs kill -9
lsof -ti:5001 | xargs kill -9
lsof -ti:8080 | xargs kill -9Error: Authentication requiredSolution:
firebase login
firebase use idea-playground-1f730# Clear caches and reinstall
rm -rf node_modules backend/node_modules
npm install
cd backend && npm install- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Firestore Emulator: http://localhost:8080
- Firebase UI: http://localhost:4000
- Firebase Blaze plan (pay-as-you-go)
- Cost: ~$0-2/month for typical usage
# Build and deploy everything
npm run deploy
# Or individual services
npm run deploy:hosting # Deploy Frontend only- Website: https://idea-playground-1f730.web.app
- Backend API: https://idea-playground-backend-1038191785150.us-central1.run.app
idea-playground/
βββ src/ # React frontend
β βββ components/ # UI components
β βββ services/ # API service layer
β βββ types/ # TypeScript types
βββ backend/ # Express.js backend
β βββ src/ # Backend source code
β βββ package.json # Backend dependencies
β βββ Dockerfile # Docker configuration
βββ scripts/ # Automation scripts
β βββ deploy.js # Deployment automation
β βββ backup-db.js # Database backup
β βββ setup.js # Development setup
βββ tests/ # Playwright E2E tests
βββ data/ # Original JSON data (backup)
βββ firebase.json # Firebase configuration
βββ package.json # Frontend dependencies
βββ DEPLOYMENT.md # Detailed deployment guide
- Multi-dimensional UI - View ideas from different perspectives
- Drag & Drop - Intuitive reordering
- Real-time Editing - Live markdown preview
- Advanced Filtering - Filter by field, readiness, complexity
- Title Validation - Prevent duplicate titles
- Auto-save - Automatic saving as you type
- Responsive Design - Works on all devices
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Run tests:
npm test - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is for personal use. Contact for usage permissions.
- Detailed Setup: See DEPLOYMENT.md
- Firebase Documentation: https://firebase.google.com/docs
- React Documentation: https://react.dev
- Playwright Documentation: https://playwright.dev
- β Frontend: Complete React app with TypeScript
- β Backend: Express.js on Google Cloud Run with RESTful API
- β Database: Cloud Firestore with migrated data
- β Testing: 23 E2E tests passing
- β Deployment: Ready for production
- π§ Authentication: Configured but not implemented
- π§ Real-time Updates: Planned for future release
Ready for development and deployment! π