Skip to content

BinaryStudioAcademy/bsa-2024-outreachvids

Repository files navigation

OutreachVids

ℹ️ General Info

Create personalized sales videos using generated video content and AI-generated avatars.

🏭 Applications

  • Backend — OutreachVids application backend.

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

  • Frontend — OutreachVids application frontend.

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

  • Shared — OutreachVids application common modules for reuse.

🖍 Requirements

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

💽 DB Schema

erDiagram
    users {
        uuid id PK
        string email UK
        string full_name
        text password_hash
        text password_salt
        datetime created_at
        datetime updated_at
    }
    videos {
        uuid id PK
        uuid user_id FK
        string name
        string url
        datetime created_at
        datetime updated_at
    }
    files {
        uuid id PK
        string url
        enum type "Values: 'video', 'photo'"
        datetime created_at
        datetime updated_at
    }
    notifications {
        uuid id PK
        uuid user_id FK
        boolean is_read
        enum type "Values: 'render'"
        datetime created_at
        datetime updated_at
    }
    users ||--o{ videos : have
    users ||--o{ notifications : have
Loading

🏃‍♂️ Simple Start

  1. Install packages: npm install
  2. Fill ENVs
  3. Install pre-commit hooks: npx simple-git-hooks
  4. Run migrations: npm run migrate:dev -w backend
  5. Run backend: npm run start:dev -w backend
  6. Run fronend: npm run start:dev -w frontend

🏗️ Architecture

🌑 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.

🏅 Pull Request flow

<project-prefix>-<issue-number>: <ticket-title>
Example
  • OV-5: Add auth

🌳 Branch flow

<type>/<project-prefix>-<issue-number>-<short-desc>
Types
  • task
  • fix
Examples
  • task/OV-6-add-videoplayer
  • task/OV-12-add-video-generating-flow
  • fix/OV-16-fix-videoplayer

🗂 Commit flow

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

📦 CI/CD

CI/CD implemented using GitHub Actions

About

Create personalized sales videos using generated video content and AI-generated avatars.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages