/pir

Primary LanguageTypeScript

[ PIR APP ] (╯°□°)╯︵ ┻━┻

img

usesFastify usesMongoDB usesReact usesNext.js

lerna TypeScript

forthebadge

Project & Motivation 🐱‍🏍✨

What is PIR?

PIR stands for Padel Indoor Rubi and it's meant to be a Web Application (with posibilites of going to mobile version in the future...) that enables regular and non-regular users of the Padel Indoor Rubi installations an easy way to look and book paddle tracks.

What else can PIR do?

  • Keep updated the user with the latest news about the center, championships, tournaments...
  • Propose open games so random people can join you to play!
  • Give the user the opportunity to contact with the center.
  • And, under discussion, there'll be a section to publish your offers as a personal trainer and the users would be able to contact you.

Why am I doing it?

Actually, already exists a web but a few days ago I wanted to book a track to play with a friend and I found myself like:

WTF

Ok, I recognize it. I looked kinda boomer... but it took me a while to understand how the web works and get the booking done.

So, I decided to try and create a better looknig and way more intuitive than the current web app...

Project Structure 🌳🐱‍💻

Currently it's a monorepo project build like:

[ pir root folder ]
    ├── static
    │
    ├── packages
    │    ├── front
    │    │    ├── ...
    │    │    └── package.json
    │    │
    │    └── back
    │         ├── ...
    │         └── package.json
    │
    ├── .eslintrc
    ├── .gitignore
    ├── package.json
    ├── lerna.json
    └── README.md
  • Backend build with Fastify

  • Frontend build with Nextjs

  • Security build with Auth0

Database

db

Models

- User
    - authID: String
    - skillLevel: String

- Track
    - _id: ObjectID
    - trackNum: Number
    - trackType: String

- Bookings
    - _id: String
    - trackID: ITrack['_id']
    - userID: IUser['authID']
    - bName: String
    - bEmail: String
    - bDate: String
    - initTime: String
    - duration: Number
    - openGame: Boolean
    - host: String
    - players: Array<String>
    - minSkill: String
    - maxSkill: String
    - stillJoinable: Boolean

- News
    - _id: String
    - createdAt: Timestamp
    - updatedAt: Timestamp
    - title: String
    - body: String
    - author: IUser['authID']

Contribute 🚀💥

Clone the project into your machine

git clone https://github.com/RealNarukyn/pir.git

Move into the cloned repo

cd pir

Install all the dependencies with lerna using the command install

npm run install

To run both [ server & front ] at the same time, execute

npm run dev