Automate the transcription and summarization of virtual meetings
- Pay attention, that we have certain quality criteria, which we should follow during application development.
TODO: Add development deployment link
The product helps the users to automate the transcription and summarization of virtual meetings (Zoom, Google Meet, MS Teams), enabling users to focus on discussions rather than note-taking
- NodeJS (22.x.x);
- npm (10.x.x);
- PostgreSQL (17.5)
erDiagram
users {
int id PK
string email UK
text password_hash
text password_salt
dateTime created_at
dateTime updated_at
}
user_details {
int id PK
string first_name
string last_name
int user_id FK
int avatar_file_id FK "nullable"
dateTime created_at
dateTime updated_at
}
meetings {
int id PK
text instance_id
enum host "Values: 'zoom'"
enum status "Values: 'ended', 'started'"
int owner_id FK
text meeting_id
text meeting_password
text summary
text action_items
int audio_file_id FK
dateTime created_at
dateTime updated_at
}
files {
int id PK
text key UK
text url
text content_type
dateTime created_at
dateTime updated_at
}
meeting_transcriptions {
int id PK
int meeting_id FK
text chunk_text
dateTime created_at
dateTime updated_at
}
users ||--|| user_details: user_id
users ||--o{ meetings: owner_id
meetings }o--|| files: audio_file_id
meetings ||--o{ meeting_transcriptions: meeting_id
user_details }o--|| files : avatar_file_id
TODO: add application schema
- React — a frontend library
- Redux + Redux Toolkit — a state manager
-
assets - static assets (images, global styles)
-
libs - shared libraries and utilities
2.1 components - plain react components
2.2 enums
2.3 helpers
2.4 hooks
2.5 modules - separate features or functionalities
2.6 types
-
modules - separate app features or functionalities
-
pages - app pages
-
db - database data (migrations, seeds)
-
libs - shared libraries and utilities
2.1 enums
2.2 exceptions
2.3 helpers
2.4 modules - separate features or functionalities
2.5 types
-
modules - separate app features or functionalities
- Puppeteer — API to automate Chrome
As we are already using js on both frontend and backend it would be useful to share some contracts and code between them.
- Zod — a schema validator
- Create and fill all .env files. These files are:
- apps/frontend/.env
- apps/backend/.env
- apps/bot/.env
You should use .env.example files as a reference.
-
Install dependencies:
npm install
. -
Install pre-commit hooks:
npx simple-git-hooks
. This hook is used to verify code style on commit. -
Run database. You can run it by installing postgres on your computer.
-
Apply migrations:
npm run migrate:dev -w apps/backend
-
Run backend:
npm run start:dev -w apps/backend
-
Run frontend:
npm run start:dev -w apps/frontend
<type>: <ticket-title> <project-prefix>-<issue-number>
For the full list of types check Conventional Commits
Examples:
feat: add dashboard screen ml-123
<issue-number>-<type>-<short-desc>
Examples:
123-feat-add-dashboard
12-feat-add-user-flow
34-fix-user-flow
We use Conventional Commits to handle commit messages
<type>: <description> <project-prefix>-<issue-number>
Examples:
feat: add dashboard component ml-45
fix: update dashboard card size ml-212
CI/CD implemented using GitHub Actions