Skip to content

BinaryStudioAcademy/bsa-winter-2023-2024-resumegemm

Repository files navigation

ResumeGemm

ℹ️ General Info

This is the repository responsible for ResumeGemm's apps.

🏭 Applications

  • Backend — ResumeGemm's application backend.

    To work properly, fill in the .env file. Use the .env.example file as an example.

  • Frontend — ResumeGemm's application frontend.

    To work properly, fill in the .env file. Use the .env.example file as an example.

  • Shared — ResumeGemm's application common modules for reuse.

🖍 Requirements

  • NodeJS (18.x.x);
  • NPM (9.x.x);
  • PostgreSQL (15.2)
  • run npx simple-git-hooks at the root of the project, before the start (it will set the pre-commit hook for any commits).

🏃‍♂️ Simple Start

  1. npm install at the root
  2. Fill ENVs
  3. npx simple-git-hooks at the root
  4. cd backend && npm run migrate:dev then run seeds npm run seed:run
  5. npm run start:dev
  6. cd frontend && npm run start:dev
  7. Enjoy ❤️

🏗 Architecture

🛖 Application Schema

TBA

💽 DB Schema

    erDiagram
    users {
        uuid id PK
        varchar email
        varchar password_hash
        varchar password_salt
        uuid profile_id FK
        timestamp created_at
        timestamp updated_at
    }
    oauth_users {
        uuid id PK
        varchar email
        enu oauth_strategy
        int oauth_id
        uuid profile_id FK
        timestamp created_at
        timestamp updated_at
    }
    user_profile {
        uuid id PK
        varchar first_name
        varchar last_name
        varchar avatar
        timestamp created_at
        timestamp updated_at
    }
    personal_information {
        uuid id PK
        varchar first_name
        varchar last_name
        varchar email
        varchar profession
        varchar industry
        varchar city
        varchar country
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    experience {
        uuid id PK
        varchar job_title
        varchar company_name
        varchar employment_type
        varchar city
        varchar country
        varchar description
        currently_working boolean
        timestamp created_at
        timestamp updated_at
        Date start_date
        Date end_date
        uuid resume_id FK
    }
    technical_skills {
        uuid id PK
        varchar skill_name
        varchar skill_level
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    education {
        uuid id PK
        varchar institution
        varchar degree
        varchar city
        varchar country
        varchar description
        currently_studying boolean
        Date start_date
        Date end_date
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    contact_details {
        uuid id PK
        varchar phone_number
        varchar social_contact
        varchar link
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    certification {
        uuid id PK
        varchar certification_name
        varchar authority
        varchar certification_url_or_code
        varchar description
        Date start_date
        Date end_date
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    language {
        uuid id PK
        varchar language
        varchar language_level
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    custom_section {
        uuid id PK
        varchar activity
        varchar city
        varchar description
        Date start_date
        Date end_date
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    resumes {
        uuid id PK
        varchar resume_title
        varchar image
        timestamp created_at
        timestamp updated_at
        timestamp deleted_at
        uuid user_id FK
        uuid template_id FK
    }
    templates {
        uuid id PK
        boolean isOwner
        varchar image
        timestamp created_at
        timestamp updated_at
        timestamp deleted_at
        uuid user_id FK
    }
    reviews {
        uuid id PK
        varchar content
        int score
        timestamp created_at
        timestamp updated_at
        uuid resume_id FK
    }
    recently_viewed {
        uuid id PK
        date viewed_at
        uuid user_id FK
        uuid resume_id FK
        uuid template_id FK
    }
    user_templates {
        uuid id PK
        uuid user_id FK
        uuid template_id FK
    }
    resumes |o--|| users : user_id
    templates |o--|| users : user_id
    education |o--|| resumes : resume_id
    contact_details |o--|| resumes : resume_id
    experience |o--|| resumes : resume_id
    users ||--|| user_profile: profile_id
    technical_skills |o--|| resumes : resume_id
    personal_information |o--|| resumes : resume_id
    certification |o--|| resumes : resume_id
    language |o--|| resumes : resume_id
    custom_section |o--|| resumes : resume_id
    reviews ||--|| resumes : resume_id
    resumes }o--|| templates : template_id
    recently_viewed ||--|| users: user_id
    recently_viewed ||--|| resumes: resume_id
    recently_viewed ||--|| templates: template_id
    users ||--o{ user_templates : "user_id"
    templates ||--o{ user_templates : "template_id"
    user_templates }o--|| users : ""
    user_templates }o--|| templates : ""

🌑 Backend

🌕 Frontend

🥊 Code quality

  • simple-git-hooks — a tool that lets you easily manage git hooks.
  • lint-staged — run linters on git staged files.
  • dangerjs — automate common code review chores.
  • commitlint — helps your team adhere to a commit convention.
  • editorconfig — helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs.
  • prettier — an opinionated code formatter.
  • ls-lint — file and directory name linter.
  • eslint — find problems in your JS code.
  • stylelint — find and fix problems in your CSS code.

🧑‍💻 CI

🗞 Git

🏅 Pull Request flow

<project-prefix>-<issue-number>: <ticket-title>
Example
  • rg-5: Add Dashboard

🌳 Branch flow

<type>/<project-prefix>-<issue-number>-<short-desc>
Types
  • task
  • fix
Examples
  • task/rg-5-add-dashboard
  • task/rg-12-add-user-flow
  • fix/rg-16-fix-user-flow

🗂 Commit flow

<project-prefix>-<issue-number>: <modifier> <description>
Modifiers
  • + (add)
  • * (edit)
  • - (remove)
Examples
  • rg-5: + title for dashboard
  • rg-12: * dashboard title
  • rg-16: - dashboard title

📦 CD

Handled by GitHub Actions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages