flash mob organization app
- Add Collaborators to Project in GitHub
- Create Task List in Readme in GitHub
- Set up basic Node.js server structure with Express and SQLite
- Implement authentication system with JWT and bcrypt
- Create database models and schema for users and events
- Build RESTful API endpoints for core functionality
- Add QR code generation for server discovery
- Set up Flutter project structure with proper dependencies
- Create core services for authentication and data management
- Build basic UI screens for onboarding and event management
- Implement offline storage with encryption
- Add comprehensive error handling and logging (basic implementation)
- Human Required: Install dependencies and test server-client communication
- Human Required: Set up Flutter development environment
- Human Required: Test on physical devices and configure network access
Phase 1 Implementation: COMPLETE β
Both server and client codebases are implemented and ready for testing. See HUMAN_HANDOFF.md
for detailed setup instructions.
- Complete Node.js server with authentication and event management
- Flutter client with full app architecture and basic UI
- Server-client communication via REST API
- Local storage with encryption
- QR code generation for easy setup
- Install Node.js dependencies and start server
- Install Flutter SDK and run mobile app
- Test basic connectivity and authentication flow
Estimated Setup Time: 2-3 hours for a developer with Flutter experience
This guide breaks down the implementation of the Conductor app into small, manageable steps. We'll focus on getting the basic server-client architecture working first, following a progressive enhancement approach.
-
Prepare development environment:
- Install Node.js and npm (if not already installed)
- Install VS Code or your preferred code editor
- Install Git for version control
-
Create project structure:
mkdir conductor-server cd conductor-server npm init -y
-
Install basic dependencies:
npm install express cors body-parser
-
Install SQLite:
npm install sqlite3
-
Create database module:
- Create a
db.js
file with basic initialization - Implement functions for:
- Creating user table
- Creating events table
- Basic CRUD operations
- Create a
-
Test database operations:
- Write simple tests to verify database functions
- Ensure tables are created correctly
-
Create the server framework:
// server.js const express = require('express'); const cors = require('cors'); const bodyParser = require('body-parser'); const app = express(); app.use(cors()); app.use(bodyParser.json()); app.get('/', (req, res) => { res.send('Conductor Server Running'); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });
-
Add authentication endpoints:
- Implement
/register
endpoint - Implement
/login
endpoint - Add JWT token generation
- Implement
-
Add event management endpoints:
- Create
/events
endpoint for listing events - Create
/events/create
endpoint - Implement event retrieval by ID
- Create
-
Add password hashing:
npm install bcrypt
- Implement password hashing in user registration
- Add password verification in login process
-
Enhance JWT implementation:
npm install jsonwebtoken
- Add token verification middleware
- Implement token refresh mechanism
-
Install QR code library:
npm install qrcode
-
Create QR code generator:
- Implement function to generate server info QR code
- Add endpoint to serve QR code as image
- Create HTML page to display the QR code
-
Implement port forwarding:
npm install nat-upnp
- Add code to automatically find available port
- Implement UPnP port forwarding
- Add fallback for manual port forwarding
-
Add server info display:
npm install ip
- Show server IP and port on startup
- Display connection instructions
- Create web interface for server management
-
Install Flutter SDK (if not already installed)
-
Create Flutter project:
flutter create conductor_client cd conductor_client
-
Add basic dependencies to pubspec.yaml:
dependencies: flutter: sdk: flutter http: ^0.13.5 flutter_secure_storage: ^8.0.0 provider: ^6.0.5
-
Create app architecture:
- Implement basic app structure with navigation
- Create screens for:
- Login
- Registration
- Events list
- Event details
-
Implement theme and styling:
- Create app theme with consistent colors
- Add core UI components (buttons, cards, etc.)
- Implement responsive layouts
-
Create authentication service:
- Implement login functionality
- Add registration
- Store authentication token securely
-
Add authentication UI:
- Create login screen with validation
- Implement registration flow
- Add authentication state management
-
Create event services:
- Implement event fetching
- Add event creation functionality
- Create data models for events
-
Build event UI:
- Create event list screen
- Implement event detail view
- Add event creation form
-
Add QR code scanner:
flutter pub add qr_code_scanner
- Implement camera access for scanning
- Create QR code scanning screen
- Process server connection information
-
Server connection flow:
- Add connection manager
- Implement server URL validation
- Store connection information locally
-
Implement local storage:
flutter pub add hive_flutter
- Create local database for events
- Implement offline event caching
- Add background sync functionality
-
Add connectivity management:
flutter pub add connectivity_plus
- Detect online/offline status
- Implement graceful offline handling
- Add sync indicators
-
Test server-client communication:
- Verify authentication flow
- Test event synchronization
- Verify offline functionality
-
Fix integration issues:
- Address API inconsistencies
- Fix data synchronization issues
- Ensure proper error handling
-
Improve overall UX:
- Add loading indicators
- Implement error messages
- Enhance navigation experience
-
Accessibility improvements:
- Add high contrast mode
- Ensure screen reader compatibility
- Implement large text support
-
Prepare for distribution:
- Create installation instructions
- Document server setup process
- Package Android APK for sharing
-
Final testing:
- Test on multiple devices
- Verify server installation process
- Document any known issues
- Begin implementing Bluetooth mesh networking
- Add end-to-end encryption
- Enhance offline capabilities
- Develop synchronized action features
- Focus on one feature at a time: Complete each step before moving to the next.
- Test frequently: Verify each component works before building on top of it.
- Use version control: Commit changes regularly to track progress.
- Document as you go: Add comments and documentation while the code is fresh.
- Start simple: Basic functionality first, then enhance progressively.
By following this step-by-step approach, you can build the Conductor app incrementally without feeling overwhelmed by the entire project scope.