Technologies:
Backend:
- Platform: .NET 6
- Network: REST, SignalR, RabbitMQ
- Database: MS SQL Server, Entity Framework Core
- Cloud: Azure
- Other: JWT, Firebase, Docker
Frontend:
- Angular
- HTML5/CSS3/SASS
By default, apps run on the following ports:
Application | Port |
---|---|
EasySpeak.Core | 5050 |
EasySpeak.Notifier | 5070 |
EasySpeak.Communicator | 5080 |
EasySpeak.Emailer | 5090 |
RabbitMQ | 5672 |
EasySpeak.Recommendator | 5110 |
Tip: If you want to connect to the specific service outside of docker, then use "localhost" as a service name, but if both services are inside docker, use service_name from a "docker-compose" file instead.
erDiagram
Users ||--|{ Friends : requesterId
Users ||--|{ Friends : userId
Users ||--|{ Notifications : userId
Users }|--|{ Chats : id
Users }|--|{ Lessons : id
Users }|--|{ CreatedLessons : id
Users {
bigint Id PK
int country
int language
int timezone
nvarchar firstName
nvarchar lastName
int age
nvarchar email
nvarchar imagePath
int sex
int languageLevel
int status
boolean isSubscribed
boolean isBanned
}
Notifications {
bigint id PK
bigint userId FK
nvarchar text
int type
boolean isRead
}
Friends{
bigint id PK
bigint requesterId FK
bigint userId FK
int friendshipStatus
}
Chats ||--|{ Messages : chatId
Chats ||--|{ Calls : chatId
Chats {
bigint id PK
nvarchar name
}
Lessons {
bigint id PK
bigint createdBy FK
nvarchar name
nvarchar description
nvarchar mediaPath
nvarchar questions
datetime startsAt
int limitOfUsers
int languageLevel
}
Calls {
bigint id PK
bigint createdBy
bigint chatId FK
datetime startedAt
datetime finishedAt
}
Tags }|--|{ Users : id
Tags }|--|{ Lessons : id
Tags {
bigint id PK
nvarchar text
}
Messages {
bigint id PK
bigint createdBy
bigint chatId FK
nvarchar text
datetime createdAt
boolean isDeleted
}
Make sure you read and follow .NET Quality Criteria. Also, there are some best practices for frontend development: Angular and Typescript
- Make sure you have Docker and Docker Compose.
- Pull this repo to your machine.
- You can build and run all application containers via
docker-compose -f docker-compose.apps.yml up -d
command. - You can pull and run all 3rd-party services (MSSQL Server, RabbitMQ) via
docker-compose -f docker-compose.services.yml up -d
command. - Happy coding! 😎
- Download and install .NET 6 SDK.
- It might be useful to have EF CLI. Install via command: dotnet tool install --global dotnet-ef
- Download and install LTS version of Node.js
- Install Angular-CLI via: npm install -g @angular/cli. What is Angular-CLI?
- ESLint (analysis tool that checks TypeScript\JavaScript code for readability, maintainability, and functionality errors)
- EditorConfig (helps maintain consistent coding styles for multiple developers working on the same project)
Some extra extensions which can significantly help to work with Angular:
- Angular Language Service (intelliSense for Angular templates)
- Angular Snippets
- Angular Schematics (working with Angular schematics via UI)
This is a list of the required environment variables:
RABBIT_MQ_USERNAME - RabbitMQ username
RABBIT_MQ_PASSWORD - RabbitMQ user password
SA_PASSWORD - MSSQL Server "SA" user password
FirebaseServiceAccountKey.json - Firebase API key. You can find it in Trello desk - Document reference - Firebase link - Save "privateKey"