Milestones - tonybolanyo/chordme GitHub Wiki

Milestone 1: Minimum Viable Product (MVP)

1. Project Setup

  • [BE] Initialize backend project structure (Node.js/Express or Django/Flask)
  • [FE] Initialize frontend project with chosen framework (React/Vue/Angular)
  • [FE] Set up basic routing and page layout
  • [FE/BE] Set up GitHub Actions for CI/CD (optional)

2. User Authentication

  • [BE] Implement user registration endpoint (email/password)
  • [BE] Implement user login endpoint with JWT
  • [BE] Secure password storage with bcrypt/Argon2
  • [FE] Create registration and login forms
  • [FE] Implement authentication state management
  • [FE/BE] Protect routes and endpoints for authenticated users

3. Song CRUD Operations

  • [BE] Design and implement Song model/schema (title, author, content, timestamps)
  • [BE] Implement CRUD endpoints for songs (create, read, update, delete)
  • [BE] Enforce user ownership and permissions on song endpoints
  • [FE] Create song list view (display user’s songs)
  • [FE] Create song editor view (basic text input)
  • [FE] Implement create, edit, and delete song actions
  • [FE] Display song details and allow basic editing

4. ChordPro Format Support

  • [BE] Implement backend support for storing and retrieving ChordPro-formatted song content
  • [FE] Implement ChordPro syntax highlighting in the editor
  • [FE] Parse and render ChordPro content in song viewer

5. Local File Upload/Download

  • [FE] Implement file upload for ChordPro files (.cho, .chopro, .crd)
  • [FE] Implement download/export of songs in ChordPro format
  • [BE] Support file upload/download endpoints if needed

6. Basic Security

  • [BE] Enforce HTTPS (development and production)
  • [BE] Validate and sanitize all user inputs
  • [BE] Implement basic rate limiting on authentication endpoints
  • [FE] Handle and display backend errors gracefully

Milestone 2: Chord Editing and Enhanced Features

1. Chord Management

  • [FE] Create chord palette/sidebar with built-in chords
  • [FE] Implement drag-and-drop of chords onto lyrics
  • [FE] Allow direct chord entry in editor
  • [BE] Optionally, store user-defined chords

2. Song Sections and Advanced ChordPro

  • [FE] Support ChordPro directives for sections (verse, chorus, bridge)
  • [FE] Visual separation of song sections in editor and viewer
  • [BE] Parse and store section data

3. Chord Transposition

  • [FE] Implement chord transposition controls in the editor
  • [BE] Provide utility functions for chord transposition

Milestone 3: Cloud Storage Integrations

1. Google Drive Integration

  • [FE] Integrate Google OAuth2 for Drive access
  • [FE] Implement import/export of ChordPro files to/from Google Drive
  • [BE] Support Google Drive file operations if needed

2. Firebase & Firestore Integration

  • [FE] Integrate Firebase SDK and Firestore
  • [FE] Implement user authentication with Firebase Auth
  • [FE] Store and retrieve songs from Firestore
  • [FE] Implement real-time sync for song editing
  • [FE] Update UI to allow user to select preferred storage backend
  • [FE] Implement Firestore security rules and test access control

Milestone 4: Collaboration and Sharing

  • [BE] Implement sharing model for songs (sharedWith, permissions)
  • [BE] Update endpoints to support collaborative editing
  • [FE] UI for sharing songs with other users (read/edit permissions)
  • [FE] Display shared songs in user’s dashboard
  • [FE] Real-time collaborative editing (if using Firestore)

Milestone 5: Advanced Features & Polish

  • [FE] Implement version history and undo/redo in song editor
  • [FE/BE] Add PDF export of songs
  • [FE] Responsive/mobile-first design improvements
  • [FE] Accessibility improvements (ARIA, keyboard navigation)
  • [BE] Logging and monitoring for security events
  • [FE/BE] Comprehensive error handling and user feedback

Milestone 6: Production Readiness

  • [FE/BE] Write and run unit and integration tests
  • [FE/BE] Prepare deployment scripts and documentation
  • [FE/BE] Final security audit and penetration testing
  • [FE/BE] Update README and Wiki with user and developer guides