Skip to content

Latest commit

 

History

History
94 lines (76 loc) · 3.29 KB

File metadata and controls

94 lines (76 loc) · 3.29 KB

PlanIt

PlanIt is a web application built with ASP.NET Core, Entity Framework, .NET Identity, and React. The API is based on Clean Architecture, Domain-Driven Design (DDD), and Command Query Responsibility Segregation (CQRS) patterns. The frontend utilizes React 18 with Redux RTK for efficient state management, providing a responsive and intuitive user interface with drag-and-drop functionality for enhanced user experience.

Key technical features

  • Clean Architecture & DDD: Ensures clear separation of concerns and a rich domain model
  • CQRS with MediatR: Separates read/write operations for scalability
  • RESTful API: Serves as the main interface for client interactions, providing clear endpoints for workspace, project, and task management operations
  • JWT Authentication: Implements secure user authentication and authorization

Demo

demo.mp4

Features

  • Create, read, update, and delete workspaces/projects/tasks
  • Move tasks from one project to another via drag and drop
  • Assign multiple users to a specific task
  • Drag tasks and project containers to organize them as you like
  • Authentication and authorization using .NET Identity with JWT
  • Register, login, and manage user profiles
  • Upload user profile pictures
  • Browse between different workspaces that encapsulate projects and tasks

What's missing

  • Persistence of project and task order in their containers
  • More unit tests, especially for the command handlers

Technologies Used

  • ASP.NET Core
  • Entity Framework Core
  • .NET Identity
  • MediatR (for CQRS) with command validation
  • SQL Server
  • React, TypeScript, Redux Toolkit, RTK Query, DndKit
  • xUnit, FluentAssertions, NSubstitute (unit testing)

Installation

Follow these steps to set up and run the project locally.

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/tomgasper/PlanIt.git
    cd PlanIt
  2. Configure the infrastructure: Update the connection string in appsettings.json to point to your SQL Server instance.

    "ConnectionStrings": {
      "DefaultConnection": "Server=your_server;Database=PlanItDb;Trusted_Connection=True;MultipleActiveResultSets=true"
    }

    Override JWT settings in appsettings.Development.json with your own secret:

    "JwtSettings": {
    "Secret": "<YOUR SECRET HERE>",
    "ExpiryMinutes": 60,
    "Issuer": "PlanIt",
    "Audience": "PlanIt"
    }

    Provide your API key for Cloudinary Service in appsettings.json:

    "CloudinarySettings": {
    "CloudName": "<YOUR CLOUD NAME>",
    "ApiKey": "<YOUR API KEY>",
    "ApiSecret": "<YOUR API SECRET>"
    }
  3. Apply migrations: Open the terminal in the project directory and run the following command to apply the migrations:

    dotnet ef database update
  4. Run the application:

    dotnet run --project src/PlanIt.WebApi

    Or you can use Visual Studio to run the project by pressing F5.