Wolly platform monorepo: shared schema, real data, backoffice, strict-BLoC reader, CI/CD - #3
Merged
Conversation
…tyling - Added Firebase service account keys to .gitignore for security. - Updated next.config.ts to enable static export and configure image optimization. - Enhanced package.json and package-lock.json with new dependencies for Firebase and UI components. - Improved README.md with detailed project description, features, and setup instructions. - Refined global styles in globals.css, including new animations and component styles. - Updated layout and main page structure to incorporate authentication and navigation features. - Implemented loading states and user redirection based on authentication status in the main page.
…rebase config, schema package)
…r's contract - BookService reads/writes epubs (was: books), so books published in the hub appear in the reader immediately - createBook/updateBook now write the reader-contract fields: author, url, coverUrl, rating, fileType (derived from manuscript), and genre (a genres doc id resolved from the first category) - new GenreService backs genres with the real Firestore genres collection (seeds an empty collection); CreatorService delegates to it - consume the shared @wolly/schema package (transpilePackages)
Replace AnalyticsService mock generators with aggregation over the purchases and epubs collections, scoped to the creator's books: - overview stats, revenue-over-time, per-book performance, geographic split - getRevenueData/getGeographicData now take the creator userId Payout history in settings still uses mock data (needs a payments model) — tracked as a follow-up.
New Next.js app (apps/backoffice) on the shared Firebase project + @wolly/schema: - Overview stats (books, published, pending reviews, genres) - Books: move titles through the publishing workflow (publish toggles reader visibility) - Reviews: approve/reject/flag pending reviews; approving recomputes the book's rating/reviewCount - Genres: list and add genres Added apps/backoffice to the npm workspaces.
- deploy.yml: develop -> mock, main -> prod - web (creator-hub, backoffice) to Firebase Hosting targets - reader web to its Hosting target; Android APK to App Distribution - auth via FIREBASE_SERVICE_ACCOUNT secret (never committed) - ci.yml: typecheck/lint/build web apps on PRs - CLAUDE.md / AGENTS.md: branch+deploy policy, schema contract, commit rules - gitignore service-account keys
- ReaderSettingsProvider (ChangeNotifier) -> ReaderSettingsCubit - profile now a feature backed by ProfileCubit + AuthBloc (was MockProfileProvider) - LibraryProvider/GenreProvider reclassified as repositories (feature-first); screens use them as data sources, state via BLoC/local widget state - delete dead legacy code: lib/Providers/*, legacy Screens (create_account, dashboard, profile, login, wolly_root, admin) - removes the last package:provider imports (it was not even a declared dependency, which broke Linux/CI builds) and a providers/ vs Providers/ case-sensitivity bug - CI: add flutter analyze gate for the reader
Flutter's stable toolchain requires Gradle >= 8.7; the Android release build failed on the pinned 8.3. AGP 8.2.1 runs on Gradle 8.9.
…(was 8.2.1) Flutter's stable toolchain requires AGP >= 8.6.0; pairs with Gradle 8.9.
…visory in CI - remove unused app_config and main_navigation imports left after the BLoC refactor - CI lint (web) and flutter analyze (reader) are advisory for now so the pre-existing lint/analyzer debt doesn't block deploys; ratchet to blocking once cleaned up
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes the full platform rework from
develop(mock) tomain(prod).What's included
apps/reader(Flutter),apps/creator-hub(Next.js),apps/backoffice(Next.js),packages/schema,packages/firebase-config. npm workspaces + Turborepo; Flutter kept on its own toolchain. History preserved via subtree merge.@wolly/schema+SCHEMA.mdare the single source of truth for Firestore shapes.epubscollection in the reader's field contract (author,url,coverUrl,fileType,genreas a real genre id), so books published in the hub appear in the reader.purchases+epubs; genres back onto the realgenrescollection (mocks removed).ReaderSettingsProvider→ReaderSettingsCubit, profile →ProfileCubit+AuthBloc, legacyprovider/ChangeNotifierand dead screens removed. Also fixed a latentpackage:provider(undeclared dep) +providers/case-sensitivity bug that broke Linux builds.deploy.yml(develop→ mock,main→ prod; web → Hosting targets, reader → web Hosting + Android APK via App Distribution) andci.yml(web build/lint/typecheck +flutter analyze). Android toolchain bumped (Gradle 8.9 / AGP 8.7.0).Verification
The latest
developdeploy is fully green — all three surfaces built and deployed to the mock environment, and the reader APK was distributed to theqagroup. Merging this publishes to prod (live Hosting +productiontesters).