Skip to content

Horizontal-org/shira

Repository files navigation

Shira logo

Shira

Shira is a Turborepo monorepo with a NestJS API, a public-facing quiz app, an internal spaces app, and shared packages used across the workspace.

Workspace

  • apps/api: NestJS backend for auth, quizzes, learners, subscriptions, email, and integrations.
  • apps/public: Public quiz experience for learners and invite flows.
  • apps/spaces: Internal product for managing quizzes, questions, learners, and organizations.
  • packages/shira-ui: Shared UI components used by the frontend apps.

Prerequisites

  • Node.js and npm installed
  • Docker and Docker Compose installed

Environment

Copy the app env files before starting:

cp apps/api/.env.example apps/api/.env
cp apps/public/.env.example apps/public/.env
cp apps/spaces/.env.example apps/spaces/.env

Set ENABLE_PUBLIC_LIBRARY=false in apps/api/.env to disable the public quiz library on self-hosted instances that don't want to depend on the public library service.

Local Development

  1. Install dependencies from the repo root:
npm install
  1. Create the shared Docker network once:
docker network create shira-network
  1. Start MySQL and Redis for the API:
docker compose -f apps/api/docker-compose.required.yml up -d
  1. Start the workspace from the repo root:
npm run dev

Don't forget to build from root if you made changes in the shira-ui package:

npm run build
  1. You can also run Storybook from packages/shira-ui:
cd packages/shira-ui
npm run storybook

This starts:

  • API on http://localhost:3000
  • Public app on http://localhost:3001
  • Spaces app on http://localhost:3002

Run API migrations from apps/api after the backend is up:

cd apps/api
npm run typeorm -- migration:run -d ./src/utils/datasources/mysql.datasource.ts

App Docs

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages