appkickstarter logoAppKickstarter

Project Structure

Learn how the code is structured and where things are placed.

AppKickstarter is a monorepo, which means it contains multiple packages in a single repository. This is a common pattern for modern web applications, as it allows you to share code between different parts of the application, and manage them all together. This is ideal for us where we want to share code between web, iOS, and Android apps.

The monorepo is managed by Turborepo, which is a tool for managing monorepos. It provides a simple way to manage multiple packages in a single repository, and is designed to work with modern web applications.

Apps (apps/)

AppKickstarter contains a number of apps that make up your project. Each app is a self-contained application that can be deployed independently.

In our case, these apps are your web app, and Expo (native) app.

You can choose to deploy any of these apps. Each app is self-contained and does not depend on other apps.

Packages (packages/)

AppKickstarter contains a number of shared packages that are used across the monorepo. The purpose of these packages is to isolate shared code from the main app, making it easier to manage and update.

Additionally, it makes it easier to swap out parts of the app for different implementations. For example, the database package contains everything related to the database, including the schema and migrations. This allows us to easily swap out the database provider or ORM without impacting other parts of the app.

Each package should be self-contained and not depend on other packages. They should export everything that is needed by the app — middleware, hooks, components and even the environment variables.

Features

TODO: (don't use a screens folder. organize by feature.)