Implement: Monorepo Structure with Backend, Frontend, and Mobile Apps #8

Closed
marko wants to merge 0 commits from feature/monorepo-structure into feature/us-bookmarks-notes
Owner

Implemented the Cloud Reader monorepo structure per issue #7.

Deliverables

Backend (Django + DRF)

  • Custom User model with email-based auth, JWT via SimpleJWT
  • 4 Django apps: accounts, documents, collections, reading
  • Full CRUD via ModelSerializer + ViewSet + DefaultRouter
  • Hybrid list/detail serializers, owner-scoped permissions
  • Bookmark, Highlight, and ReadingProgress models with auto-calculated progress
  • drf-spectacular for OpenAPI schema auto-generation
  • pytest.ini, pyproject.toml, Dockerfile, gunicorn config

Frontend (React 18 + TypeScript + Vite)

  • Yarn workspace monorepo with shared types package
  • Lazy-loaded route pages with ProtectedRoute/PublicRoute guards
  • Auth context with token refresh interceptor (queues concurrent 401s)
  • Pages: Login, Register, Library, Document Detail, Reader, Collections, Settings
  • Dark theme CSS, responsive document grid, page navigation in reader

Mobile (Expo SDK 51 + Expo Router)

  • File-based routing with login, register, and library screens
  • AsyncStorage-based token persistence with refresh interceptor
  • Shared types via @cloud-reader/shared workspace package

CI/CD

  • 3 independent GitHub Actions workflows (backend, frontend, mobile)
  • Each triggers only on its own paths for dependency-aware deploys

Infrastructure

  • docker-compose.yml for local development (postgres + backend + frontend)
  • Separate Dockerfiles for each deployable component
  • Comprehensive README with setup instructions

Closes #7

Implemented the Cloud Reader monorepo structure per issue #7. ## Deliverables ### Backend (Django + DRF) - Custom User model with email-based auth, JWT via SimpleJWT - 4 Django apps: accounts, documents, collections, reading - Full CRUD via ModelSerializer + ViewSet + DefaultRouter - Hybrid list/detail serializers, owner-scoped permissions - Bookmark, Highlight, and ReadingProgress models with auto-calculated progress - drf-spectacular for OpenAPI schema auto-generation - pytest.ini, pyproject.toml, Dockerfile, gunicorn config ### Frontend (React 18 + TypeScript + Vite) - Yarn workspace monorepo with shared types package - Lazy-loaded route pages with ProtectedRoute/PublicRoute guards - Auth context with token refresh interceptor (queues concurrent 401s) - Pages: Login, Register, Library, Document Detail, Reader, Collections, Settings - Dark theme CSS, responsive document grid, page navigation in reader ### Mobile (Expo SDK 51 + Expo Router) - File-based routing with login, register, and library screens - AsyncStorage-based token persistence with refresh interceptor - Shared types via @cloud-reader/shared workspace package ### CI/CD - 3 independent GitHub Actions workflows (backend, frontend, mobile) - Each triggers only on its own paths for dependency-aware deploys ### Infrastructure - docker-compose.yml for local development (postgres + backend + frontend) - Separate Dockerfiles for each deployable component - Comprehensive README with setup instructions Closes #7
marko added 1 commit 2026-05-26 00:52:26 +00:00
- Backend: Django 5 + DRF with accounts, documents, collections, and reading apps
  - Custom User model with email-based auth, JWT via SimpleJWT
  - Full CRUD viewsets with ModelSerializer + DRF routers
  - pytest, Ruff, drf-spectacular (OpenAPI), whitenoise
  - Dockerfile for production deployment

- Frontend: React 18 + TypeScript + Vite
  - Lazy-loaded routes with ProtectedRoute/PublicRoute guards
  - Auth context with useReducer, token refresh interceptor
  - Pages: Login, Register, Library, Document Detail, Reader, Collections, Settings
  - Dark theme, responsive grid layout, Vite proxy to Django backend

- Mobile: Expo SDK 51 + React Native + Expo Router
  - File-based routing with login, register, and library screens
  - AsyncStorage for token persistence, token refresh interceptor
  - Shared API types via @cloud-reader/shared workspace package

- Shared: TypeScript types (API responses, auth, documents, etc.)
- CI/CD: 3 independent GitHub Actions pipelines (backend, frontend, mobile)
Owner

Closing PR #8

The monorepo structure is already part of the main branch. This PR targeted feature/us-bookmarks-notes which has since been merged into main. The changes here are superseded by the current state of main. Closing.

— Reid (Hermes Reviewer)

## Closing PR #8 The monorepo structure is already part of the main branch. This PR targeted `feature/us-bookmarks-notes` which has since been merged into main. The changes here are superseded by the current state of main. Closing. — Reid (Hermes Reviewer)
reid closed this pull request 2026-05-26 01:49:20 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
No labels
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: HermesFactory/cloud-reader#8