The Ezenity.API serves as a versatile backend for any frontend technology that can plug into it. It offers a range of features from account creation and management to customizable profiles and sections. The API is designed to be flexible, allowing for various use-cases including basic portfolio frontends.
The backend is organized into multiple class libraries, following the Clean Architecture pattern:
Ezenity.API
: The API layer that exposes endpoints.Ezenity.Core
: Contains entities and core business logic.Ezenity.Infrastructure
: Houses the data access logic and other infrastructural concerns.Ezenity.DTOs
: Data Transfer Objects for communication between layers.
The solution is housed under the name ProjectEzenity
(Previously known as Ezenity_VPN_Server
).
- Account Management: Create, update, and manage user accounts.
- Customizable Profiles: Future support for customizable user profiles.
- Admin Features: Ability to create custom email templates.
- Logging: Custom logging using Serilog.
- Custom Sections: Create custom sections and determine their population logic.
- Email Templates: Admin accounts can create and manage custom email templates.
- Security: Custom JWT for authorization, with plans to upgrade from SHA256 to SHA512.
- API Documentation: SwaggerUI for endpoint documentation.
- Future Plans: Payment processing feature to be added.
- .NET 6.0: The API is built using .NET 6.0.
- Serilog: Custom logging for better traceability, with daily log files.
- Swashbuckle (Swagger): API documentation and testing.
- Custom JWT: Utilizes custom JWT for authorization. (Upgrading from SHA256 to SHA512 is in progress)
The application uses SHA-512 for enhanced security in JWT token handling and other cryptographic operations.
- .NET SDK 6.0 or higher
- SQL Server (or a compatible database engine)
- Your preferred API testing tool (e.g., Postman)
Note: Default email templates and an admin account for basic functions will be available in a future release.
- Clone the repository:
git clone https://github.com/ezenity/ProjectEzenity.git
- Navigate to the
ProjectEzenity
folder:cd ProjectEzenity/Ezenity.API
- Restore the NuGet packages:
dotnet restore
- Build the project:
dotnet build
- Run the project:
dotnet run
- Navigate to Ezenity.API Project
cd ProjectEzenity/Ezenity.API
- Run the following command to create a new migration:
dotnet ef migrations add InitialCreate --startup-project ../Ezenity.API --project ../Ezenity.Infrastructure --namespace Ezenity.Infrastructure.Data.Migrations
- To apply the migration and update the database, run:
dotnet ef database update --startup-project ../Ezenity.API --project ../Ezenity.Infrastructure
- AppSettings: Description of the properties in
appsettings.json
and their functions. - Environment Variables: You'll want to setup a SECRET_KEY or a file containing the Secret Key.
The API endpoints are documented using SwaggerUI. You can access it at http://localhost:5001
.
Note: No specific Token Handling are available at this moment.
Note: No specific Database Operations are available at this moment.
Note: No specific Logging are available at this moment.
Note: No specific Testing are available at this moment.
- Implement a payment processing feature.
- Increase security from SHA256 to SHA512.
The Ezenity Frontend serves two main purposes:
- to showcase the capabilities of the Ezenity Backend API
- To act as a personal website.
The project is in its early beta stages and is designed to be modular, configurable, and customizable. Future versions will include Ezenity.React
, Ezenity.Angular
, and potentially other frontend technologies.
- Profile Creation: Users can create and manage their profiles.
- Role-Based Permissions: Modify sections based on role ID.
- Section Modification: Users with the correct role ID can modify sections. (Note: This is in early beta and a lot of functionalities are hardcoded)
- Modular Design: Everything will be modular and configurable in the future.
- React: The frontend is built using React, but it can be adapted for other frontend technologies like Angular.
Future Goal: The frontend will eventually feature a setup wizard that guides users through the initial setup process.
Note: No specific configuration are available at this moment.
Note: No specific use-cases or examples are available at this moment.
If you would like to contribute to this project, please fork the repository and submit a pull request.
This project is licensed under the MIT License - see the LICENSE.md file for details.