https://github.com/ivanms1/daepa
https://github.com/ivanms1/daepa
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/ivanms1/daepa
- Owner: ivanms1
- Created: 2022-07-10T08:26:28.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-01T08:33:06.000Z (over 3 years ago)
- Last Synced: 2025-01-24T18:49:10.120Z (over 1 year ago)
- Language: TypeScript
- Size: 1.19 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Turborepo + Nexus + Prisma + Next Template
## Technology stack
- Backend: [Node.js](https://nodejs.org/en/), [GraphQL Nexus](https://nexusjs.org/), [Prisma](https://www.prisma.io/) and [Apollo Server](https://www.apollographql.com/docs/apollo-server/#:~:text=Apollo%20Server%20is%20an%20open,use%20data%20from%20any%20source.)
- Frontend: [React.js](https://reactjs.org/), [Next.js](https://nextjs.org/) and [Apollo Client](https://www.apollographql.com/docs/react/)
## Monorepo Setup
- `apps/api`: [Node.js](https://nodejs.org/en/) app, provides all the apis and connects to the database.
- `apps/web`: Main app powered by [Next.js](https://nextjs.org)
- `apps/admin`: [Next.js](https://nextjs.org) app for admin purposes
- `packages/ui`: Internal component library used by both `web` and `admin` applications
- `packages/apollo-hooks`: Libary of apollo-graphql hooks generated by [GraphQL Code Generator](https://www.graphql-code-generator.com/) for `web` and `admin` app to consume
## Requirements
- ### General
- **Yarn**
This repository uses [Yarn](https://classic.yarnpkg.com/lang/en/) as a package manager.
- ### Backend
- **PostgreSQL Database**
To run the backend, a connection to a database is needed. The easiest way to run a Postgres DB locally is via [Docker](https://www.docker.com/).
Once you have Docker installed run this command:
```
docker run --detach --publish 5432:5432 -e POSTGRES_PASSWORD=postgres --name daepa postgres:10.12
```
Another alternative is running a PostgreSQL DB in the cloud with services like [fly.io](https://fly.io/) or [Heroku](https://dashboard.heroku.com) wich have a a free tier.
- **Cloudinary**
All the images are saved in [Cloudinary](https://cloudinary.com/), the free tier is more than enough for development.
- **Enviroment Variables**
Inside the `apps/api` directory
```
DATABASE_URL="database url, if running with docker it would be: postgresql://postgres:postgres@localhost:5432/project-shelf"
CLOUDINARY_URL="Your Cloudinary key goes here"
JWT_SECRET="Any random string, only for development"
SERVER_URL="http://localhost"
```
- ### Frontend
- **Github OAuth**
Github is being used as an auth provider, you will need to [create an OAuth](https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app) app on your github account with these settings:

- **Enviroment Variables**
Inside the `apps/web` and `apps/admin` directories
```
GITHUB_CLIENT_ID="your oatuh github client id"
GITHUB_CLIENT_SECRET="your oatuh github client secret"
JWT_SECRET="some random string, only for development"
NEXTAUTH_URL="http://localhost:3000"
NEXT_PUBLIC_SERVER_URL="http://localhost:8080/graphql"
NEXT_PUBLIC_CLOUD_NAME="cloudinary id"
```
## Running the app
- ### General
- Build the hooks library
```
yarn build:hooks
```
- Install all dependencies, on the root folder run
```
yarn install
```
- ### Backend
#### Only when running the app for the first time
- Make sure you cd into the project-shelf/apps/api directory
- Generate data source client code with prisma
```
npx prisma generate
```
- Initialize Database
```
npx prisma migrate dev
```
#### After
- Run app
```
yarn dev:api
```
- ### Frontend
- Start the app
```
yarn dev:web
```
- (optional) inside the apps/web, use the `yarn generate` cli command to generate templates for pages and components.