ReebA (pronounce Reeb-Ah) is a web-based and comminunity-based application for organizing concerts or any events. You can hop in and find tickets from big shows pretty easily with our sites. Along with shows locally from people around you. We also secure your transaction and you can also easily sell or transfer owner of tickets to other users pretty easily without having to print out the ticket at all.
Our project consists of
- ReebA.com: Frontend application.
- ReebA API: Backend application API with PostgreSQL.
- Vuejs for creating frontend application.
- Tailwindcss for styling our application.
- d3.js for creating beautiful graph admin side.
- Vite for building our frontend Vuejs application.
- Fastify for serving our api.
- PostgreSQL for our database.
- pgroonga for text search optimizations in other languages.
- Node.js v14 or higher.
You can check by typing
into the terminal.
node -v npmv7 or higher. You can check by typinginto the terminal.npm -vpnpmv6.26.0 or higher. You can check by typinginto the terminal.pnpm -vPostgreSQLv14.1 exact. You can check by typinginto the terminal.psql -V postgrespgroongav2.3.6 or higher. Sadly there's no way to check versions that I've known yet.
You can download Node.js here (download the LTS version). You can download PostgreSQL here. You can download pgroonga here.
When Node.js is installed, upgrade npm by running
npm i -g npm@latest
and then install pnpm by running
npm i -g pnpm
ใน Terminal
Run this command from the root of the project
pnpm install
to install dependencies in the project.
In case of when you switch branch to other people's project. I suggest running
pnpm install --frozen-lockfile
because pnpm install --frozen-lockfile will install dependencies without editing pnpm-lock.yaml. If there's an error installing dependencies with pnpm install --frozen-lockfile, then use the fallback pnpm install
Reminder: this topic needs to be done only once.
At ReebA, we use PostgreSQL to store user data and credentials, this section will teach you how to set up the database locally. But first of all
- You should have PostgreSQl installed in your machine.
- You should know your master password of
postgressuperuser. (They will ask for it during the installation). - You should be able to use
psqlcommand.
If top 3 requirements surpassed. You're ready to develop ReebA's database. These are steps to get the database running.
WARNING: You should follow the instructions exactly or you'll end up with a broken database that's super hard to work with and fix.
-
Start your favourite terminal (Preferrably Git Bash or
Command Promptin Windows Terminal, I don't recommend PowerShell) insidebackendfolder. -
Run
psql -U postgresand put in your
postgressuperuser password.You should see a terminal like this
psql (14.1) Type "help" for help. postgres=#This means you've successfully logged in.
-
Run
postres=# CREATE DATABASE "reeba";You should see
CREATE DATABASEThis means you've successfully created a database.
-
Run
postgres=# \c postgres://postgres@localhost:5432/reebaput in your
postgressuperuser password, You should see a message sayingYou are now connected to database "reeba" as user "postgres".This means you've successfully connected to the database.
You can see tables and relations by typing
reeba=# \dt -
Run
CREATE EXTENSION IF NOT EXISTS pgroonga;to install
pgroongaextension before migration.You should see
CREATE EXTENSIONThis means you've successfully installed the extension.
-
Migrate the database with schema by running
reeba=# \i database.sqlI don't know how would it look like for new users, but if the command success there should be a bunch of
CREATE TABLEpops out. -
Create a file called
.env.localinsidebackendfolder.NOTE, SERIOUS NOTE: THIS FILE CONTAINS CREDENTIALS THAT ARE NOT SAFE TO BE PUSHED TO THE REPOSITORY LIKE YOUR POSTGRES SUPERUSER PASSWORD, AND IMPORTANTLY, JWT SECRET. IF THIS SECRET EVER GETS LEAKED. OUR USERS INSIDE THE DATABASE WILL GET HACKED IN NO TIME. SO PLEASE BE CAREFUL WITH SETTING UP THIS PART.
MAKE SURE THE FILE IS GREYED OUT IN THE VISUAL STUDIO CODE FILE EDITOR. AND MAKE SURE (I MEAN VERY VERY SURE) THAT YOU DON'T PUSH THIS FILE UP TO THE REMOTE.
DO NOT PUT ANY CONFIDENTIALS IN
.envFILE BECAUSE THIS FILE GETS PUSHED TO THE REMOTEWhen the file is created, copy stuffs in
.envfile into.env.localfile.The
.env.localfile should look like thisFASTIFY_PORT='3000' JWT_SECRET= ARGON2_PEPPER= POSTGRES_USERNAME= POSTGRES_PASSWORD= POSTGRES_HOSTNAME='localhost' POSTGRES_PORT='5432' POSTGRES_DBNAME='reeba'Fill in the missing variables behind the equal sign into
.env.localfile.JWT_SECRET: Please email me to get the secret that we use, or runnode -e "console.log(require('crypto').randomBytes(256).toString('base64'))"ARGON2_PEPPER: Runnode -e "console.log(require('crypto').randomBytes(40).toString('base64'))"POSTGRES_USERNAME: If you log into the database with commandpsql -U postgres, the username would be'postgres'.POSTGRES_PASSWORD: The password forpostgressuperuser.
All fields should be wrapped in single quotes. With all these you should be ready to develop the API.
Run this command from the root of the project
pnpm build:common && pnpm dev:frontend
and you should see the website pop up at http://localhost:8080.
First of all, you have to start PostgreSQL database server.
-
Open up separate terminal inside
backendfolder. Runpsql -U postgresand put in your
postgrespassword. -
Run
postgres=# \c postgres://postgres@localhost:5432/reebaand put in your
postgrespassword.You will see
You are now connected to database "reeba" as user "postgres".Migrate the database with
reeba=# \i database.sqlYou're ready to develop.
Run these commands from the root of the project.
| Terminal #1 | Terminal #2 |
|---|---|
pnpm dev:common |
pnpm dev:backend |
You will see the API runs at http://localhost:3000.
First of all, you have to start PostgreSQL database server.
-
Open up separate terminal inside
backendfolder. Runpsql -U postgresand put in your
postgrespassword. -
Run
postgres=# \c postgres://postgres@localhost:5432/reebaand put in your
postgrespassword.You will see
You are now connected to database "reeba" as user "postgres".Migrate the database with
reeba=# \i database.sqlYou're ready to develop.
Open 3 terminals and run these commands from the root of the project.
| Terminal #1 | Terminal #2 | Terminal #3 |
|---|---|---|
pnpm dev:common |
pnpm dev:frontend |
pnpm dev:backend |
You will see the API runs at http://localhost:3000 and frontend server runs at http://localhost:8080
Several modules will be tested using tap. Type
pnpm test
to see results.
All tests should pass before submitting PRs
In ReebA, there's a command called seed that you can run to seed your database, running
pnpm seed
will generate fake ReebA data and inject into the database.
