A full-stack modern Address Book application built to demonstrate Clean Architecture, Secure Authentication, and Advanced Data Handling.
- 🔐 Authentication & Security:
- Full Login/Register system using ASP.NET Core Identity.
- Secured with JWT (JSON Web Tokens).
- Angular Functional Interceptors & Guards for route protection.
- 📇 Contact Management:
- Create, Read, Update, and Delete (CRUD) contacts.
- Image Upload handling (stored locally/server-side).
- Rich data entry (Date of Birth, Job Titles, Departments).
- 🔍 Advanced Search & Export:
- Filter by Name, Mobile, Email, or Address.
- Filter by Date of Birth range.
- Export to Excel feature using ClosedXML.
- 📐 Modern Architecture:
- Backend: Onion Architecture (Domain, Application, Infrastructure, API).
- Frontend: Angular Modular Design with Lazy Loading.
The backend is built using Onion Architecture to ensure separation of concerns and testability.
- Framework: .NET 9 Web API.
- Database: SQL Server with Entity Framework Core (Code First).
- Patterns: Repository Pattern, Generic Repository, Unit of Work approach.
- Mapping: AutoMapper.
- Libraries:
Microsoft.AspNetCore.Identity(Auth).ClosedXML(Excel Export).System.IdentityModel.Tokens.Jwt.
Built with the latest Angular features focusing on performance and code cleanliness.
- Framework: Angular 17+.
- Core Concepts:
- Standalone Components.
- Signals for state management.
- Functional Interceptors & Guards.
- Lazy Loading for Modules (Auth, AddressBook).
- Styling: Bootstrap 5 & SCSS.
- Libraries:
ngx-toastr(Notifications),ngx-bootstrap.
Follow these instructions to get the project up and running on your local machine.
- Clone the repository.
- Navigate to
Tamweely.Apifolder. - Update the Connection String in
appsettings.jsonto match your local SQL Server instance. - Run Migrations to create the database:
dotnet ef database update --project ../Tamweely.Infrastructure --startup-project . - Run the API:
The API will start at
dotnet run
https://localhost:7xxx(Check launchSettings.json).
- Navigate to
TamweelyClientfolder. - Install dependencies:
npm install
- Open
src/environments/environment.tsand ensureapiUrlmatches your running Backend port. - Run the application:
ng serve -o
- Navigate to
http://localhost:4200.
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/Auth/login |
Authenticate user & get Token |
GET |
/api/AddressBook |
Get all contacts |
POST |
/api/AddressBook |
Create new contact (FormData) |
GET |
/api/AddressBook/search |
Search with filters |
GET |
/api/AddressBook/export |
Download Excel file |
Mahmood Elbadri
- Full-Stack Developer (.NET & Angular)
- GitHub Profile