Giter Site home page Giter Site logo

jurabek / athena Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sponger94/athena

0.0 0.0 0.0 250 KB

This is a sample task and time management assistant made with .NET Core Microservices that follows Pomodoro Technique. Inspired from Microsoft's eShopOnContainers project.

License: MIT License

C# 99.01% Shell 0.99%

athena's Introduction

Athena

build status build status

Sample User Interface

Note: These images are mockups and made only for server-side requirenment clarifications only.

Features

  • Tasks management - Manage your tasks and count your time towards them. You can take notes, add sub-tasks, attachments and track the status of each of them.
  • Reminders - Set reminders on any task and get notified. Also settings date allows you to track your tasks by calendar.
  • Labels - Mark your tasks by adding labels to them.
  • Pomodoro - Start pomodoro against a task and track your time. Configurable pomodoro duration as well as breaks timer.
  • Statistics - Track your pomodoro history and statistics.

Architecture Overview

Cross-platform microservices app based on .NET Core and running on Docker host. This app is made for sample purposes only and may not fully follow production ready code. Tasks microservice is made by using DDD / CQRS architecture only for sample purposes, however it's mostly only CRUD service.

It's important to understand that CQRS and most DDD patterns (like DDD layers or a domain model with aggregates) are not architectural styles, but only architecture patterns. Microservices, SOA, and event-driven architecture (EDA) are examples of architectural styles. They describe a system of many components, such as many microservices. CQRS and DDD patterns describe something inside a single system or component; in this case, something inside a microservice. From this book page 186.

Image Description

Architecture-01

OpenAPI

What Is OpenAPI?

OpenAPI Specification (formerly Swagger Specification) is an API description format for REST APIs. An OpenAPI file allows you to describe your entire API, including: • Available endpoints (/users) and operations on each endpoint (GET /users, POST /users) • Operation parameters Input and output for each operation • Authentication methods • Contact information, license, terms of use and other information. API specifications can be written in YAML or JSON. The format is easy to learn and readable to both humans and machines. The complete OpenAPI Specification can be found on GitHub: OpenAPI 3.0 Specification. From https://swagger.io/docs/specification/about/

Microservice List

No. Service Description OpenAPI Build Status
1 Tasks Manages user tasks, labels, attachments etc. Follows DDD / CQRS architecture. View build status
2 Pomodoro Serves for tracking user pomodoro's(towards which task, duration and date) View build status
3 Statistics (Soon) Runs for keeping statistics and analytics of users activity. Soon [WIP] Status
4 Identity Server4 (Soon) Stands for user authorization and user roles. Soon [WIP] Status
5 API Gateway (Soon) Intercepts user requests and re-routes them to the corresponding microservices. Soon [WIP] Status
6 WebApp MVC (Soon) Bridges browser requests with the backend. Soon [WIP] Status

Technologies Used

Backend Testing DevOps (Soon)
ASP.NET Core Web API xUnit
EF Core Moq
IdentityServer4 NUnit (Soon)
Dapper NSubstitute (Soon)
SQL Server

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request

Licence

Code released under the MIT license.

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.