Skip to main content

Developer Guide

Welcome to the BookWish developer documentation! This guide provides everything you need to understand, contribute to, and deploy the BookWish platform.

Quick Start

New to BookWish development? Start here:

  1. Prerequisites - Install required tools
  2. Environment Setup - Set up your development environment
  3. Environment Variables - Configure environment variables
  4. Architecture Overview - Understand the system design
  5. Code Style Guide - Learn our coding standards

Documentation Sections

Getting Started

Essential guides for setting up your development environment.

Architecture

Comprehensive documentation of the BookWish system architecture.

Contributing

Guidelines for contributing code, documentation, and improvements.

Deployment

Everything related to deploying and releasing BookWish.

Key Concepts

The 4-Layer Model

BookWish is structured in 4 architectural layers with clear dependencies:

Layer 4: Programs (Challenges, Book Clubs)
↓ depends on
Layer 3: Social (Profiles, Lines, Reviews, Feed)
↓ depends on
Layer 2: Store Operations (POS, Inventory, Websites)
↓ depends on
Layer 1: Core Loop (Users, Books, Wishlists, Stores, Orders)

This model ensures:

  • Clear separation of concerns
  • Predictable build order
  • Maintainable codebase
  • Scalable feature development

Learn more in the Layer Model documentation.

Technology Stack

LayerTechnologyPurpose
FrontendFlutterCross-platform app (iOS, Android, Web)
StateRiverpodReactive state management
BackendNode.js + TypeScriptREST API server
ORMPrismaType-safe database access
DatabasePostgreSQL (Supabase)Primary data store
CacheRedis (Railway)Session cache, feed cache
PaymentsStripe + RevenueCatPayment processing
HostingRailway + VercelInfrastructure

See the complete Tech Stack documentation.

Deployment Targets

BookWish deploys to multiple platforms:

  • iOS: App Store + TestFlight
  • Android: Google Play Store
  • Web: Vercel (Flutter Web)
  • Backend API: Railway
  • Store Websites: Vercel (Next.js)

Learn more in the Deployment section.

Coding Standards

We maintain high standards for code quality and consistency:

TypeScript/Node Backend

  • No any type - Always use proper types
  • No console logging - Use structured logging
  • No TODOs - Complete implementations before committing
  • No drive-by refactors - Stay focused on the task

Flutter/Dart App

  • No print statements - Remove debug output
  • No emoji in UI - Keep text professional
  • Use Cupertino icons - SF-style icons only
  • Composition over inheritance - Small, focused widgets

See the Code Style Guide for complete standards.

Common Tasks

Running the App Locally

# Backend
cd backend
npm install
npm run dev

# Flutter App
cd app
flutter pub get
flutter run

Running Tests

# Backend tests
cd backend
npm test

# Flutter tests
cd app
flutter test

Creating a Release

# From project root
npm run release

# Prompts for version number
# Automatically updates all version files
# Creates git tag and triggers CI/CD

See Release Process for details.

Contributing Code

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes following our Code Style
  4. Write tests for your changes
  5. Submit a Pull Request
  6. Address review feedback

See Contributing Guide for complete workflow.

Project Structure

bookwish_monorepo/
├── app/ # Flutter application
│ ├── lib/
│ │ ├── main.dart
│ │ ├── /api # API client
│ │ ├── /services # Business logic
│ │ ├── /state # Riverpod providers
│ │ ├── /ui # UI components
│ │ └── /utils # Utilities
│ ├── ios/ # iOS specific
│ └── android/ # Android specific

├── backend/ # Node.js backend
│ ├── src/
│ │ ├── index.ts
│ │ ├── /routes # API routes
│ │ ├── /controllers # Request handlers
│ │ ├── /services # Business logic
│ │ ├── /middleware # Express middleware
│ │ ├── /integrations # External APIs
│ │ └── /prisma # Database schema
│ └── tests/

├── docs-site/ # Documentation (this site)

└── stores/ # Next.js store websites

Development Workflow

1. Pick an Issue

  • Check the issue tracker
  • Look for good first issue or help wanted labels
  • Comment to claim the issue

2. Set Up Your Environment

3. Make Changes

  • Create a feature branch
  • Follow Code Style Guide
  • Write tests for your changes
  • Ensure all tests pass

4. Submit PR

Getting Help

Documentation

Issues & Questions

  • Search existing GitHub issues
  • Create a new issue with the question label
  • Tag relevant maintainers in discussions

Code Examples

  • Review existing pull requests
  • Check the codebase for similar implementations
  • See Architecture for design patterns

App Identity

PlatformIdentifier
App NameBookWish
Version3.1.0 (Flutter rewrite)
iOS Bundle IDWillow-Tree-Creative.bw-app
App Store SKUWillow-Tree-Creative.bw-app
Apple ID6748889200
Android App IDcom.willowtreecreative.bookwish
CompanyWillow Tree Creative LLC

Resources

Documentation

External Resources

Next Steps

Ready to start developing?

  1. Set up your environmentGetting Started
  2. Understand the architectureArchitecture
  3. Review coding standardsCode Style Guide
  4. Find an issue to work onContributing Guide
  5. Deploy your changesDeployment

Welcome to the BookWish development community!