{"id":18572109,"url":"https://github.com/liannoi/wlodzimierz","last_synced_at":"2025-04-10T07:30:59.489Z","repository":{"id":36980956,"uuid":"316920092","full_name":"liannoi/wlodzimierz","owner":"liannoi","description":"Thesis at Computer Academy STEP. A cross-platform messenger consisting of a SPA application in Angular, as well as a native mobile application in Kotlin.","archived":false,"fork":false,"pushed_at":"2024-06-12T19:59:49.000Z","size":83927,"stargazers_count":1,"open_issues_count":34,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-14T02:15:00.040Z","etag":null,"topics":["angular","azure","clean-architecture","cqrs","docker","dotnet","firebase","reactive-extensions","sql-server","wlodzimierz"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/watch?v=AHxxJGIcA14","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liannoi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-11-29T09:51:20.000Z","updated_at":"2023-07-25T14:41:14.000Z","dependencies_parsed_at":"2023-02-19T16:00:50.562Z","dependency_job_id":"08a5b673-ca19-429c-aeac-73d39b4fbbad","html_url":"https://github.com/liannoi/wlodzimierz","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liannoi%2Fwlodzimierz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liannoi%2Fwlodzimierz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liannoi%2Fwlodzimierz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liannoi%2Fwlodzimierz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liannoi","download_url":"https://codeload.github.com/liannoi/wlodzimierz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223430316,"owners_count":17143624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","azure","clean-architecture","cqrs","docker","dotnet","firebase","reactive-extensions","sql-server","wlodzimierz"],"created_at":"2024-11-06T23:05:01.465Z","updated_at":"2024-11-06T23:05:02.128Z","avatar_url":"https://github.com/liannoi.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"left\" width=\"116\" height=\"116\" src=\"https://github.com/liannoi/wlodzimierz/blob/main/img/favicon.ico\"/\u003e\n\n# WLODZIMIERZ\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/21ec38ca8a924fce8b34be1398042f0c)](https://app.codacy.com/gh/liannoi/wlodzimierz?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=liannoi/wlodzimierz\u0026utm_campaign=Badge_Grade)\n[![Code Climate](https://api.codeclimate.com/v1/badges/d20791e6eae10de3149c/maintainability)](https://codeclimate.com/github/liannoi/wlodzimierz/maintainability)\n[![CodeFactor](https://www.codefactor.io/repository/github/liannoi/wlodzimierz/badge)](https://www.codefactor.io/repository/github/liannoi/wlodzimierz)\n[![Codebeat](https://codebeat.co/badges/9fb05993-a47e-49f1-8a70-656cb9ddaa57)](https://codebeat.co/projects/github-com-liannoi-wlodzimierz-main)\n[![BetterCode](https://bettercodehub.com/edge/badge/liannoi/wlodzimierz?branch=main)](https://bettercodehub.com/)\n\nThe goal of the project is to provide a simple, convenient and cross-platform\nmessenger for providing textual communication between users.\n\n## Contents\n\n- [Principles, paradigms, practices](#principles-paradigms-practices)\n- [Architecture](#architecture)\n- [Technologies](#technologies)\n   - [External clients](#external-clients)\n      - [SPA web app](#spa-web-app)\n      - [Native mobile app](#native-mobile-app)\n   - [Server](#server)\n- [Getting Started](#getting-started)\n- [License](#license)\n\n## Principles, paradigms, practices\n\nThis project adheres to the best practices from the entire field of business\napplication development.\n\nAmong them:\n\n- Object Oriented Programming (OOP)\n- Object Oriented Design (OOD - SOLID, GRASP)\n- GOF design patterns as well as architectural patterns (MVC, MVVM, CQRS)\n- Domain-Driven Design (DDD)\n- Reactive Programming Paradigm\n- Principle of \"Clean Architecture\"\n- Test Driven Development (TDD)\n\n## Architecture\n\nThe server-side RESTful Web API is written in .NET Core using MediatR library\nto implement CQRS design pattern.\n\nThe clients are:\n\n- Single-page application (SPA) in Angular\n- Native mobile application on Kotlin\n\n## Technologies\n\n\u003e To describe the technologies of this project, it was decided to divide them\n\u003e into two conditional categories. The first category **External clients**\n\u003e refers to technologies that are related to the clients of the project, and\n\u003e the second category **Server** refers to technologies that are related to the\n\u003e server-side RESTful Web API.\n\n### External clients\n\n#### SPA web app\n\n- Angular 11.1\n- Sass\n- Nx\n- Bootstrap 4.6 (ng-bootstrap)\n- RxJS 6.6\n- NgRx 10.1\n- Font Awesome\n- SweetAlert 2\n\n#### Native mobile app\n\n- Kotlin 1.4\n- Android Jetpack (Hilt, Android Architecture Components)\n- SQLite\n- RxJava (RxKotlin, RxAndroid, RxBinding)\n\n### Server\n\n- .NET 5\n- Docker 19.03\n- Microsoft SQL Server 2019\n- Entity Framework Core 5\n- ASP.NET Core Identity 5\n- MediatR 9\n- SignalR\n- AutoMapper 10.1\n- FluentValidation 9.3\n- Swagger\n- LinqKit 1.1\n- Redis 6\n- Serilog\n- FluentAssertions, Moq, NUnit, Respawn\n\n## Getting Started\n\nMessenger Wlodzimierz is hosted on two hosts:\n\n- Server-side - [`Microsoft Azure`](https://wlodzimierz.azurewebsites.net/api)\n- Angular web application - [`Firebase`](https://wlodzimierz-7z7dc.web.app)\n\nIf you want to deploy the system locally or get acquainted in more detail with\nthe specification of the messenger - you should go to the [Wiki](https://github.com/liannoi/wlodzimierz/wiki) section.\n\n\u003e Hosting on Azure and Firebase **was disabled** after demonstration and defense of the thesis at Computer Academy STEP. Therefore, in order to deploy and see this work in person - you need to go to the [Wiki](https://github.com/liannoi/wlodzimierz/wiki) section for instructions on local deployment.\n\n## License\n\nThis repository is licensed under\n[Apache-2.0](https://github.com/liannoi/wlodzimierz/blob/main/LICENSE).\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fliannoi%2Fwlodzimierz.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fliannoi%2Fwlodzimierz?ref=badge_large)\n\n```\nCopyright 2020-2021 Maksym Liannoi\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliannoi%2Fwlodzimierz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliannoi%2Fwlodzimierz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliannoi%2Fwlodzimierz/lists"}