Skip to content
MedSlimanePublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Scribo

Scribo is a cross-platform learning companion that turns lectures into structured study material, with AI-assisted revision and a community layer. This monorepo contains the NestJS API plus the Android and iOS clients.

Repository Layout

apps/
  api/          # NestJS backend (MongoDB, Google OAuth, Stripe subscriptions)
  android/      # Jetpack Compose app (offline transcription via Vosk)
  ios/          # SwiftUI app
assets/         # Shared design tokens and branding
infra/          # Local MongoDB + mongo-express via Docker

Product Highlights

  • Lecture capture with offline transcription (Vosk) and structured notes
  • Smart revision tools (summaries, quizzes, flashcards)
  • Community features (threads, posts, reactions, moderation)
  • Tiered subscriptions powered by Stripe
  • Shared design tokens in assets/theme.json

Tech Stack

  • Backend: NestJS 11, MongoDB (Mongoose), Passport, Stripe SDK
  • Android: Kotlin, Jetpack Compose, Coroutines, Retrofit/Moshi
  • iOS: SwiftUI, Combine, GoogleSignIn, StripePaymentSheet
  • Tooling: pnpm 10, Docker Compose, Gradle, Xcode

Getting Started

Prerequisites

  • Node.js 18+ and pnpm (see package.json)
  • Docker (for local MongoDB)
  • Android Studio (Koala or newer) and Java 11
  • Xcode 15+ with iOS 17 SDK

Install Dependencies

pnpm install

Local Infrastructure

pnpm dev:infra

This starts MongoDB on localhost:27017 and mongo-express on http://localhost:8081.

Backend (apps/api)

  1. Copy environment variables and fill in real values:

    cp .env.example apps/api/.env
  2. Start the API in watch mode:

    pnpm api:dev
  3. Test and lint:

    pnpm api:test
    pnpm --filter ./apps/api test:e2e
    pnpm api:lint

For full configuration details, see apps/api/ENVIRONMENT_SETUP.md.

Android (apps/android)

Open apps/android in Android Studio, sync Gradle, then run:

./gradlew :app:assembleDebug
./gradlew :app:installDebug

Google Sign-In uses the backend GOOGLE_ANDROID_CLIENT_ID and the SHA-1 fingerprint configured in Google Cloud.

iOS (apps/ios)

Open apps/ios/scribo.xcodeproj in Xcode and run the scribo scheme. Set the Google client IDs in your Xcode config and ensure the backend .env includes GOOGLE_IOS_CLIENT_ID.

Documentation

  • Backend setup and auth/subscriptions: apps/api/docs/oauth-and-subscriptions-setup.md
  • Roles, permissions, and tier guards: apps/api/docs/authorization-and-roles.md
  • Transcription pipelines: apps/api/docs/transcription.md
  • E2E testing notes: apps/api/test/README.md

Security Notes

  • Never commit real secrets. Use .env.example as the template.
  • Stripe webhooks can be tested locally with stripe listen --forward-to localhost:3000/webhooks/stripe.

Contributing

If you add backend features that impact auth, roles, or tiers, mirror the behavior in E2E tests under apps/api/test.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages