Parkpal is a smart parking multi-device application that allow users to rent out their parking spaces to other drivers.
- Typescript
- Nestjs
- Graphql
- Typeorm
- Typescript
- Nextjs
- Material UI
- Styled Components
- Redux Toolkit
- Apollo Client
- Leaflet
- Graphql Code Generator
- Typescript
- Expo + React Native
- React Native Maps
- React Native Paper
- Apollo Client
- Redux Toolkit
- Graphql Code Generator
- Postgres
- Husky
- Nginx
- Certbot
- Github Actions
- Docker
- Vercel
- Digital Ocean
- Stripe
- Geoapify
- AWS S3
- Google Directions API
Packages | Description |
---|---|
packages/server |
NestJS Graphql Server |
packages/web |
Nextjs Web Client |
packages/mobile |
Expo React Native Client |
Script | Description |
---|---|
yarn infra:up |
Start Docker containers |
yarn infra:down |
Shut down Docker containers |
yarn dev:server |
Start server |
yarn dev:web |
Start web client |
yarn dev:mobile |
Start mobile client |
yarn commit |
Run Commitizen |
yarn lint |
Lint entire workspace |
yarn prepare |
Install husky hooks |
- To run this project you need to have
node
,yarn
anddocker
installed. - Refer to the
.env.*.example
in the server, web and mobile packages to see what env variables are needed to start the application correctly. - For payments you will need a Stripe development account and add the public key to
packages/mobile/.env
and the private key topackages/server/.env
. - The server uses Stripe, Geoapify and AWS S3. You'll need to add the corresponding keys to
packages/server/.env
file. - The mobile app requires a valid Google Directions API key in
packages/mobile/.env
to work correctly.
To get up and running follow these steps
- Install the dependencies by running
yarn
in the root of the project. - Start the docker container with
yarn infra:up
- Start the server with
yarn dev:server
- Start the web client with
yarn dev:web
- Start the mobile client with
yarn dev:mobile
After modifying the graphql schemas in the server or writing new graphql
queries/mutations/subscriptions in the web/mobile client, run yarn codegen
in the corresponding
package folder to sync the schemas and generate new frontend code.
Be careful to be in the right package folder when installing dependencies. Although dependencies in this monorepo are stored on the top level node_modules, they must be installed in their corresponding package.json.
This project uses Vercel's github integration to automate deployments. Github Actions are used to
automate the deployment of the server to digital ocean. The docker-compose.yml
file in
packages/server
is used for production and will start up Nginx, Certbot, Watchtower and Postgres
in the host VPS.
This project is using the
conventional commits standard. Use
yarn commit
or git cz
if you have commitizen
installed globally to check for linting errors
before commiting and standardizing your commit messages.
- Nelson Fleig Kokopelli84
- Viktor Hajdu Vitto44
- Guillem Sardà Parreu guillemsarda
- Brandon Dickson brandond98