Autoline is a multifunctional automobile-centric service. It allows searching by filters, detailed comparing, and reviewing, but also it picks up the available options on the market to choose the best price.
-
Pay attention, that we have certain quality criteria , which we should follow during application development.
Our task is to help the buyer quickly and conveniently find the best offer auto offer. For those who are determined by the choice, in each section, there is a selection by parameters and an opportunity to compare products with each other. Available and convenient text search allows users to search both the desired sections and specific products by name. And on the page of each model, there is detailed information that will help you make a decision: description, technical characteristics, photos and videos, useful links, and reviews. There is also a block "Where to buy?" with a list of online stores, prices, and direct links to the purchase page.
To store that data we use the MariaDB
, community-developed, commercially supported fork of the MySQL
.
Diagram:
- Data is stored in a few schemas -
public
,cars
, andlocations
. - Tables are named in the snake_case and the plural form.
- Typescript
- NodeJS 17
- Express
- MariaDB
- Prisma ORM
- Passport + various auth strategies
- React 18
- Vite
- Redux Toolkit
- Redux Persist
- MUI
- Docker
- Docker-Compose
- nginx
- Github Actions
- assets - static assets (images, global styles)
- common - common/shared files (types, enums)
- components - plain react components
- exceptions
- helpers
- services - api accessing services
- store - redux store with all features as sub directorys
- validation-schemas - schemas that used for forms validation
- routes - rest endpoints paths definitions. There should be no domain logic
- controllers - rest endpoints. There should be no domain logic
- services - domain logic and implementation for the rest controllers
- data - everything related to data access (migrations, models, repositories)
- helpers
- common - common/shared files (types, enums)
- exceptions
- validation-schemas - schemas that used for input data validation
As we are already using js on both frontend and backend it would be useful to share some contracts and code between them.
- Create and fill all
.env
files. These files are:
.env/frontend.env
.env/backend.env
You should use .env.example
directory as a reference and consult coaches or colleagues for the secret keys
-
Install dependencies (
node_modules
). Runyarn install:all
in the root folder. -
Run
docker-compose
:cd .docker/autoline && docker-compose -f docker-compose.dev.yml up --build
- Create and fill all
.env
files. These files are:
.env/frontend.env
.env/backend.env
You should use .env.example
directory as a reference and consult coaches or colleagues for the secret keys
-
Install dependencies (
node_modules
). Runyarn install:all
in the root folder. -
Run the database. You can either run it in docker using command
cd ./docker/autoline && docker-compose -f docker-compose.services.yml up --build
or by installingMariadb
on your computer. Docker variant is preferred. -
Apply migrations:
cd backend && yarn db:migrate:dev:local
-
Run shared:
cd shared && yarn start:dev
-
Run backend:
cd backend && yarn start:dev:local
-
Run frontend:
cd frontend && yarn start:dev:local