GithubHelp home page GithubHelp logo

jamesralstin / chatapp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from marinasundstrom/chatapp

0.0 0.0 0.0 2.98 MB

Chat app

JavaScript 0.02% Smalltalk 0.01% C# 97.56% CSS 0.72% HTML 1.12% Batchfile 0.01% Less 0.56% SCSS 0.01% Gherkin 0.01%

chatapp's Introduction

Chat App

Chat app based on the TodoApp project.

Here is a video. And another newer video showcasing "reactions".

Screenshot

Screenshot

Background

This project was created as part of an assignment for a Job interview process. Coincidentally, I had been thinking of renovating my old "Messenger" project the days before receiving the assignment.

This assignment gave me a scope and some motivation.

Features

Here are the main features of the app:

  • View and create channels.
  • Post messages in specific channels. Edit and delete them.
  • Admin commands - sent in channel.

Other features:

  • User registration - aka "Welcome screen".
  • Light and Dark mode
  • Localization - English and Swedish

For more details, read the design document.

Futures

  • Incremental load of history
  • Read receipt

Project

The app consists of a Frontend built with Blazor WebAssembly, and a Backend with ASP.NET Core.

Major technical characteristics of the project are listed below.

Architecture

  • Clean Architecture (CA) in app project, with Vertical-slices architecture (VSA)
    • Combining all layers into one project with focus on features.
    • Using Domain-driven design (DDD) practices
  • Event-driven architecture - Domain Events

Technologies

  • ASP.NET Core

    • Endpoints - "Minimal API" with versioning
    • SignalR
    • OpenAPI
  • Frontend/UI

    • Blazor
    • MudBlazor (component framework)
  • Azure SQL Server

  • IdentityServer for authentication - with seeded users Alice and Bob.

Unused but available technologies:

  • RabbitMQ (for asynchronous messaging)
    • MassTransit
  • Redis (for distributed cache)

Other:

  • Open Telemetry - with Zipkin
  • Health checks

Tests

  • Application logic tests
  • Domain model test
  • Integration tests - with Test host and Testcontainers

Running the project

Tye

Project Tye is an experimental developer tool for .NET from Microsoft. It allows you to speed up development time by locally orchestrating your services, both projects and containers. Tye also helps with service discovery.

Install the Tye CLI tool. Make sure to have Docker Desktop installed.

To run the solution:

tye run

Dashboard: http://localhost:8000/

With Watch feature:

tye run --watch

Docker Compose

TBA

docker-compose up

Seeding the databases

In order for the databases to be created and for the app to function, you need to seed the databases for the Web and IdentityService projects.

The services, in particular the databases, have to be running for this to work.

The seeding code target databases that have been defined in the appsettings.json files in each project.

Web

When in the Web project:

dotnet run -- --seed

IdentityService

When in the IdentityService project:

dotnet run -- /seed

Services

These are the services:

Login credentials

Here are the users available to login as, provided that you have seeded the database.

Username: alice 
Password: alice

Username: bob 
Password: bob

Swagger UI

Hosted at: https://localhost:5001/swagger/

chatapp's People

Contributors

marinasundstrom avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.