Giter Club home page Giter Club logo

acme-corp's Introduction

Acme Corp

Warning This is a work-in-progress and not the finished product.

Feel free to leave feature suggestions but please don't open issues for bugs or support requests just yet.

About

This project features the next-generation stack for building fullstack application. It's structured as a monorepo with a shared API using tRPC. Built on the new app router in Next.js 13 with React Server Components.

  • For database querying, Kysely is used as a query builder whilst remaining Prisma as a schema management tool. (This means it's fully edge-ready!). To keep a good DX, we use a custom setup with kysely-prisma-generator to pull out all the prisma types, and then a post-generate script to create a fully typesafe db client using database.js from PlanetScale.
  • This project uses Clerk as it's authentication provider.
  • Awesome UI components from shadcn/ui

Installation

There are two ways of initializing an app using the acme-corp starter. You can either use this repository as a template:

use-as-template

or use Turbo's CLI to init your project:

npx create-turbo@latest -e https://github.com/juliusmarminge/acme-corp

Quick Start

Note The db package is preconfigured to use PlanetScale and is edge-ready with the database.js driver. If you're using something else, make the necesary modifications to the Kysely client.

To get it running, follow the steps below:

1. Setup dependencies

# Install dependencies
pnpm i

# Configure environment variables
# There is an `.env.example` in the root directory you can use for reference
cp .env.example .env.local

# Push the Prisma schema to the database
pnpm db:push

2. Configure Expo dev-script

Warning The Expo app is still stock from create-t3-turbo and haven't yet gotten any attention.

We will get their in due time!

Use iOS Simulator

  1. Make sure you have XCode and XCommand Line Tools installed as shown on expo docs.

    NOTE: If you just installed XCode, or if you have updated it, you need to open the simulator manually once. Run npx expo start in the root dir, and then enter I to launch Expo Go. After the manual launch, you can run pnpm dev in the root directory.

    +  "dev": "expo start --ios",
  2. Run pnpm dev at the project root folder.

Use Android Emulator

  1. Install Android Studio tools as shown on expo docs.

  2. Change the dev script at apps/expo/package.json to open the Android emulator.

    +  "dev": "expo start --android",
  3. Run pnpm dev at the project root folder.

TIP: It might be easier to run each app in separate terminal windows so you get the logs from each app separately. This is also required if you want your terminals to be interactive, e.g. to access the Expo QR code. You can run pnpm --filter expo dev and pnpm --filter nextjs dev to run each app in a separate terminal window.

3. When it's time to add a new package

To add a new package, simply run pnpm turbo gen init in the monorepo root. This will prompt you for a package name as well as if you want to install any dependencies to the new package (of course you can also do this yourself later).

The generator sets up the package.json, tsconfig.json and a index.ts, as well as configures all the necessary configurations for tooling around your package such as formatting, linting and typechecking. When the package is created, you're ready to go build out the package.

References

The stack originates from create-t3-app.

A blog post where I wrote how to migrate a T3 app into this.

Questions?

Book us with Cal.com

acme-corp's People

Contributors

dependabot[bot] avatar dkasper avatar ixahmedxi avatar juliusmarminge avatar perkinsjr avatar renovate[bot] avatar sameerjadav avatar vaniapopovic avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.