Coder Social home page Coder Social logo

thisisnabi / blogger Goto Github PK

View Code? Open in Web Editor NEW
538.0 15.0 117.0 459 KB

Clean Architecture, CQRS, and DDD Implementation by ASP.NET Core Blog problem domain.

Home Page: https://www.thisisnabi.dev

License: MIT License

C# 99.62% Dockerfile 0.38%
aspnetcore clean-architecture csharp domain-driven-design ef-core

blogger's Introduction

ASP.NET Core Blog Engine

This document serves as a guide for building a blog application using Clean Architecture and Domain-Driven Design (DDD) software design approach In ASP.NET Core 8.

Tip

Here you can see UI for this api project, Blogger.UI

Give a Star! ⭐

If you find this Blogger valuable and believe in the importance of CQRD, Clean Architecture, Domain-Driven Design, consider showing your support by giving this repository a star!

Getting Started

This repository provides various resources to get you started with building your blog application:

Cooming soon

Index

  • Problem domain:
  • Ubiquitous Language
  • Domain objects
  • Data Model
  • Aggregates
  • Repository
  • Factory
  • Strongly-typed IDs
  • Domain Events
  • Clean Architecture
  • Setting up our domain objects
  • Setting up usescases
  • Persist data by using EF Core
  • Expose our features

Tests

  • Unit Tests (44 Passed)
  • Integration Tests (38 Coming)
  • Functional Tests (18 Coming)

Data Model

image

Contributing

We welcome contributions to this project! Feel free to open pull requests with improvements, bug fixes, or additional features.

License

This project is licensed under the MIT License: MIT License.

Stay Connected

Feel free to raise any questions or suggestions through GitHub issues.

blogger's People

Contributors

alighodrati avatar alrzamini avatar amirhessampourhossein avatar bluescreen1999 avatar ejlalzadeh avatar ershad95 avatar kiapanahi avatar liaghatmand avatar mahdishamsdev avatar mhshahmoradi avatar mohammadtz avatar naderjavid avatar sa-es-ir avatar thisisnabi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blogger's Issues

The Limitations of Storing User Information in Comments or Posts

Hello, one thing bothers me, if we are in a context where users can login, then the user's name or other information may change, which happens when the post or the author himself is posted, what I saw Strangely, this information is stored inside the comment itself, or it is written inside the work itself, for example, an author may later change his last name and want to edit his information, but it is not possible in this way, or the normal user himself may want to change his information later. Granted, this is more useful where the data isn't going to change at all, so it looks incomplete.

Implement email service

Hi @thisisnabi ,
Before anything, I want to thank you for your great repository.❤️ It's brilliant and I am learning a lot from it. 👍

I noticed the email service is not implemented and I would to like to develop this feature.
There are two main subjects that need to be discussed :

  • The email address that we are going to send from
  • The implementation itself (I was thinking about FluentEmail package but we could also do it from scratch)

What are your thoughts ?

Add Authentication & Authorization

I noticed your project doesn't have authentication or authorization and I would like to implement them.
There a few questions that need to be answered :

  • What type of auth would you prefer ? (JWT maybe?)
  • Should we include authorization as well or do you think it's not required for this project ?

@thisisnabi

Clarification Needed: Why Are Price and Address Defined as the Same ValueObject?

Hi Team,

I have noticed that within the valueObjectTest in the BuildingBlocks project, both Price and Address are defined as the same ValueObject. This seems counterintuitive as Price and Address represent fundamentally different concepts.

Could you please provide clarification on the rationale behind this design decision? Understanding the reasoning will help ensure consistency and clarity in our value object definitions.

Thank you!

Best regards,

Salar Afshar

Emit Domain Event to leverage SRP and OCP

As a suggestion, emitting a domain event like CommentCreated would be more effective when creating a comment. A handler, such as the MakeCommentCommandHandler, can then manage this event and attempt to send the email. This approach helps separate these two logics, adhering to the Single Responsibility Principle (SRP) and Open/Closed Principle (OCP). It also allows for more straightforward future extensions, such as sending notifications through other channels.

primary keys problem

Hello, This is database diagram of blogger, I think that yellow marked fields should be primary keys of particular tables. because in this situation we can have multiple record with same data
like below!!

SubscriberId ArticleId Id
1111111111 2222222 1
1111111111 2222222 2
1111111111 2222222 3

blog-db-diagram

It should be something like this

Screenshot 2024-05-08 150020

Or something like that

Screenshot 2024-05-08 150236

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.