Skip to content

Latest commit

 

History

History
371 lines (321 loc) · 20.8 KB

File metadata and controls

371 lines (321 loc) · 20.8 KB

🌌 Bookkeeping Platform

Next-Generation Enterprise Accounting & ERP Foundation

License Build Status Contributors

.NET 10 Blazor PostgreSQL CQRS Clean Architecture


Bookkeeping is a production-ready, scalable financial management system built on Clean Architecture and CQRS. Designed as a robust foundation for a full ERP ecosystem, it moves beyond simple CRUD to handle complex business logic, IFRS compliance, and real-time financial tracking.

✨ Enterprise-Grade Features

💰 Financial Engine 🌍 IFRS Compliance 📊 Real-Time Analytics
• Document lifecycle (Draft ➔ Processed)
• Automated sequence numbering
• Dynamic VAT calculation
• Tree-based account structures
• Hierarchical financial modeling
• Multi-region tax ready
• Live dashboard updates
• Interactive MudBlazor charts
• Instant financial insights
📚 Master Data 🔐 Advanced Security 📂 Asset Handling
• Centralized reference data
• Flexible categorization
• Smart alphabetical sorting
• JWT Auth & Refresh Tokens
• Protected API endpoints
• Role-based access control
• Secure file uploads
• Document attachment system
• Image & media management

🏗️ Architecture & CQRS

The platform enforces a strict Clean Architecture, ensuring the core domain remains isolated from infrastructure and presentation concerns. State mutations and data retrieval are strictly separated using the CQRS pattern via MediatR.

  • 🟢 Commands: Mutate state containing complex business validations.
  • 🔵 Queries: Highly optimized read operations returning clean DTOs.
  • 🧩 Handlers: Isolated business logic ensuring high testability and maintainability.
📂 View Project Structure 👇
📦 Bookkeeping Solution  
├── 📂 Bookkeeping  
│   ├── 📂 Bookkeeping (Main Server / API)  
│   │   ├── 📂 Application (Commands / Queries / Handlers)  
│   │   ├── 📂 Entities (Domain Models)  
│   │   ├── 📂 Controllers (API Endpoints)  
│   │   ├── 📂 Infrastructure (EF Core, Auth, Repositories)  
│   │   ├── 📂 Services (Business logic implementations)  
│   │   └── 📂 Components (Blazor Server UI)  
│   │  
│   └── 📂 Bookkeeping.Client (Blazor WASM Frontend)  
│       ├── 📂 Pages (Accounts, Auth, Orders, etc.)  
│       ├── 📂 Providers (Auth State)  
│       └── 📂 Layouts & Dialogs  
│  
└── 📂 Bookkeeping.Contracts (Shared Library)  
    ├── 📂 DTOs & Models  
    ├── 📂 Enums  
    └── 📂 Common (Responses, Results, Pagination) 

📸 Application Gallery

Explore the complete visual ecosystem of the Bookkeeping application. The gallery showcases our sophisticated UI, covering complex CRUD workflows for both data records and their respective categories across Light and Dark themes.

🔐 1. Authentication & Onboarding (Fixed Theme)


The authentication layer uses a dedicated, high-focus layout.

Login PageRegistration Page
LoginRegister

☀️ 2. Light Theme Experience


📊 Dashboard / Home Page

Dashboard Light

👤 User Profile
Profile ViewEdit Profile
Profile ViewEdit Profile
🗂️ IFRS Accounts (МСФО) — 9 Screen Workflow

Unified Main Table

IFRS Main

🔹 Account Management

DetailsCreateEditDelete

🔹 Category Management

DetailsCreateEditDelete
📋 Reference Books (Справочники) — 9 Screen Workflow

Unified Main Table

Reference Main

🔹 Reference Item Management

DetailsCreateEditDelete

🔹 Category Management

DetailsCreateEditDelete
💰 Cash Receipt Orders (ПКО)
Orders List
DetailsCreateEditDelete
📈 Income Articles (Статьи доходов)
Income List
DetailsCreateEditDelete
⚖️ VAT Management (НДС)
VAT List
DetailsCreateEditDelete

🌙 3. Dark Theme Experience


📊 Dashboard / Home Page

Dashboard Dark

👤 User Profile
Profile ViewEdit Profile
🗂️ IFRS Accounts (МСФО) — 9 Screen Workflow

Unified Main Table

IFRS Main Dark

🔹 Account Management

DetailsCreateEditDelete

🔹 Category Management

DetailsCreateEditDelete
📋 Reference Books (Справочники) — 9 Screen Workflow

Unified Main Table

Reference Main Dark

🔹 Reference Item Management

DetailsCreateEditDelete

🔹 Category Management

DetailsCreateEditDelete
💰 Cash Receipt Orders (ПКО)
Orders List Dark
DetailsCreateEditDelete
📈 Income Articles (Статьи доходов)
Income List Dark
DetailsCreateEditDelete
⚖️ VAT Management (НДС)
VAT List Dark
DetailsCreateEditDelete

🚀 Getting Started

Follow these steps to get a local copy up and running. Running the commands from the main server directory will automatically restore and build all linked projects (Client and Contracts).

📋 1. Prerequisites

🛠️ 2. Installation & Setup

  1. Clone the repository:
    git clone https://github.com/abdullokhonz/Bookkeeping.git
    cd Bookkeeping
  2. Navigate to the Main Server project:

    The solution is structured to build all dependencies from this entry point:

    cd Bookkeeping
    cd Bookkeeping
  3. Configure Environment (appsettings.json):

    Update the configuration file inside the Bookkeeping folder with your credentials. You will need to set up the database, JWT, and service providers:

    {
      "ApiSettings": { "BaseUrl": "https://localhost:7277/" },
      "ConnectionStrings": {
        "DbPostgres": "Host=localhost;Port=5432;Database=BookkeepingDB;User ID=postgres;Password=your_password"
      },
      "JwtSettings": {
        "Key": "YOUR_SECURE_JWT_KEY_HERE",
        "Issuer": "Bookkeeping_IdentityServer",
        "Audience": "Bookkeeping_WebClient",
        "LifetimeMinutes": 15
      },
      "EmailSettings": {
        "SmtpHost": "YOUR_SMTP_HOST_HERE",
        "SmtpPort": "YOUR_SMTP_PORT_HERE",
        "FromName": "Bookkeeping Notifications",
        "FromEmail": "YOUR_EMAIL_HERE",
        "EmailPassword": "YOUR_EMAIL_PASSWORD_HERE"
      },
      "SmsSettings": {
        "Dlm": "YOUR_SMS_DLM_HERE",
        "T": "YOUR_SMS_T_HERE",
        "Login": "YOUR_SMS_LOGIN_HERE",
        "PassHash": "YOUR_SMS_PASSHASH_HERE",
        "Sender": "YOUR_SMS_SENDER_HERE"
      }
    }
  4. Build & Launch:

    This will restore all projects (Server, Client, Contracts) and start the application:

    dotnet restore
    dotnet build
    dotnet run

    The platform will be available at your configured BaseUrl.


🔐 Important Notes on Authentication

Environment Access Instructions
🌐 Web Frontend (Blazor) Full authentication flow is active. You can register and log in to access the dashboard.
🚀 Postman / External Use /auth/login to obtain a token and add it to Authorization: Bearer header.
🛠️ Swagger UI Warning: Authorize via Swagger UI is currently not configured.
To test via Swagger: Manually remove the [Authorize] attribute from Controllers.

🤝 Contributing

Contributions are welcome! If you have suggestions or want to contribute, please feel free to open issues or pull requests.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.