{"id":50985118,"url":"https://github.com/mahmoudsaad111/jobapptracker","last_synced_at":"2026-06-19T18:04:20.830Z","repository":{"id":362736748,"uuid":"1260370524","full_name":"mahmoudsaad111/JobAppTracker","owner":"mahmoudsaad111","description":"A full-stack web application that helps job seekers stay organized during their job search. Users can track applications, monitor statuses, record interview details, manage documents, and keep notes — all in one place. ","archived":false,"fork":false,"pushed_at":"2026-06-05T16:56:09.000Z","size":3311,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T18:43:54.286Z","etag":null,"topics":["angular","asp-net-core","clean-architecture","cqrs","mediatr","sql-server","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mahmoudsaad111.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-05T12:25:38.000Z","updated_at":"2026-06-05T16:56:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mahmoudsaad111/JobAppTracker","commit_stats":null,"previous_names":["mahmoudsaad111/jobapptracker"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mahmoudsaad111/JobAppTracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudsaad111%2FJobAppTracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudsaad111%2FJobAppTracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudsaad111%2FJobAppTracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudsaad111%2FJobAppTracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mahmoudsaad111","download_url":"https://codeload.github.com/mahmoudsaad111/JobAppTracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudsaad111%2FJobAppTracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34542467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","asp-net-core","clean-architecture","cqrs","mediatr","sql-server","typescript"],"created_at":"2026-06-19T18:04:17.397Z","updated_at":"2026-06-19T18:04:20.820Z","avatar_url":"https://github.com/mahmoudsaad111.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# 🎯 Job Application Tracker\n\n![ASP.NET Core](https://img.shields.io/badge/ASP.NET%20Core-10.0-blue)\n![Angular](https://img.shields.io/badge/Angular-21-red)\n![License](https://img.shields.io/badge/license-MIT-green)\n\n## 📌 Overview\n A full-stack web application that helps job seekers stay organized during their job search. Users can track applications, monitor statuses, record interview details, manage documents, and keep notes — all in one place. \n \nBuilt with **ASP.NET Core 10** REST API and **Angular 21** frontend, secured with **Microsoft Identity** authentication, designed with **Clean Architecture**, **CQRS**, **MediatR**, and **Repository Pattern**, backed by **SQL Server** database.\n\n\u003e 💡 *I built this because I was scattered across multiple files and folders — \n\u003e saving CVs, resumes, and cover letters everywhere while trying to track \n\u003e applications and interviews at the same time. I wanted one clean place for all of it, so I built it.*\n \n \n ## ✨ Features \n ### 📋 Job Application Management\n  - Add, edit, and delete job applications \n  -  Store company name, job title, location, job link, and application date\n  -  View all saved applications in one dashboard \n ### 📊 Status Tracking Track every application through its full lifecycle: \n - 🔖 Saved→ 📩 Applied → 🎤 Interview → 🎉 Offer → ✅ Accepted | ❌ Rejected  \n\n### 🎤 Interview Tracking\n- Record interview date, type, and notes per application\n- Add preparation materials before each interview\n-  Record feedback and lessons learned after each interview\n\n### 📝 Notes Management\n-  **Application Notes** — attach notes to any job application (recruiter info, salary expectations, reminders)\n-  **Personal Notes** — a personal space to store your own thoughts, goals, and job search strategy\n\n ### 📄 Documents Management - \n -   Upload and save CVs, Resumes, and Cover Letters  \n  -   Store preparation materials per interview \n ### 📊 Dashboard \u0026 Statistics \n -   Overview of all applications and their statuses - \n  -  Summary statistics: \n      -  Total applications \n      - Number of interviews \n     - Number of offers \n     - Number of rejections\n  ### 🔐 Authentication \u0026 Security \n-    User registration and secure login with **Microsoft Identity**\n-   **Email confirmation** for account verification\n-    **Forgot password / password reset** via secure email links\n-   Each user can only access their own data\n-   Secure password hashing and storage\n\n\n\n## 🛠️ Tech Stack\n\n**Backend:**\n- ASP.NET Core 10\n- Entity Framework Core\n- SQL Server\n- Microsoft Identity (Authentication \u0026 Authorization)\n- Clean Architecture\n- MediatR \n- CQRS\n\n**Frontend:**\n- Angular 21\n- TypeScript\n- Bootstrap / Tailwind CSS\n\n**Tools:**\n- Git \u0026 GitHub\n- Swagger (API Documentation)\n- Visual Studio / VS Code\n- Microsoft SQL Server Management Studio (SSMS)\n\n  \n\n\n## 🏗️ Architecture \u0026 Design Patterns \nThe backend is built following \n**Clean Architecture** principles with a clear separation of concerns across layers:\n\n```\nbackend/\n├── API/                    # Controllers \u0026 HTTP layer\n├── Application/            # Business logic\n│   ├── Commands/           # Write operations (CQRS)\n│   ├── Queries/            # Read operations (CQRS)\n│   ├── Handlers/           # MediatR handlers\n│   └── DTOs/               # Data Transfer Objects\n├── Domain/                 # Core entities \u0026 interfaces\n└── Infrastructure/         # EF Core, Repositories, Identity\n    └── Repositories/       # Repository pattern implementation\n```\n\n\n### Patterns \u0026 Principles Used:\n| Pattern | Purpose |\n|---------|---------|\n| **Clean Architecture** | Separation of concerns across layers |\n| **CQRS** | Separate read and write operations |\n| **MediatR** | Decoupled communication between layers |\n| **Repository Pattern** | Abstraction over data access layer |\n\n---\n\n\n\n---\n\n## 📸 Screenshots\n\n### 🔐 Authentication\n| Login | Register | Forgot Password |\n|-------|----------|-----------------|\n| ![Login](screenshots/Login.png) | ![Register](screenshots/Register.png) | ![Forgot Password](screenshots/EmailConfirm.png) |\n\n---\n\n### 🏠 Dashboard\n| Overview | Statistics |\n|----------|------------|\n| ![Dashboard](screenshots/Dashboard.png) | ![Stats](screenshots/Dashboard2.png) |\n\n---\n\n### 📄 Applications \u0026 Interviews\n| Applications List | Application Detail | Interviews |\n|-------------------|--------------------|------------|\n| ![Applications](screenshots/JobApplications.png) | ![Add Job](screenshots/JobApplication.png) | ![Interviews](screenshots/Interviews.png) |\n\n---\n\n### 📝 Notes \u0026 Documents\n| Notes | Documents | Profile |\n|-------|-----------|---------|\n| ![Notes](screenshots/Notes.png) | ![Documents](screenshots/Documents.png) | ![Profile](screenshots/Profile.png) |\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n- [.NET 10 SDK](https://dotnet.microsoft.com/download)\n- [Node.js](https://nodejs.org/)\n- SQL Server\n\n### Installation\n\n```bash\n# Clone the repo\ngit clone https://github.com/mahmoudsaad111/JobAppTracker.git\n\n# Backend setup\ncd backend\ndotnet restore\ndotnet ef database update\ndotnet run\n\n# Frontend setup\ncd frontend\nnpm install\nng serve\n```\n\n\u003e App runs on `https://localhost:4200` by default  \n\u003e API runs on `https://localhost:44315` by default  \n\u003e Swagger UI available at `http://localhost:44315/swagger`\n\n---\n\n\n## 📋 API Modules\n\n| Module | Description |\n|--------|-------------|\n| `/api/auth` | Register, login, logout, Forgot Password |\n| `/api/applications` | Manage job applications |\n| `/api/notes` | Manage User Notes |\n| `/api/documents` | Upload \u0026 manage documents |\n| `/api/interviews` | Interview tracking \u0026 feedback |\n| `/api/dashboard` | Statistics \u0026 overview |\n\n\u003e 📖 Full API documentation available at `/swagger` when running locally\n\n---\n\n## 📁 Project Structure\n```\nJobAppTracker/\n├── backend/\n│   ├── API/\n│   ├── Application/\n│   │   ├── Commands/\n│   │   ├── Queries/\n│   │   ├── Handlers/\n│   │   └── DTOs/\n│   ├── Domain/\n│   └── Infrastructure/\n│       └── Repositories/\n│\n└── frontend/\n    └── src/\n        ├── app/\n        ├── components/\n        └── services/\n```   \n---\n\n## 🔮 Future Enhancements\n- 🔔 Interview reminders \u0026 notifications\n- 📊 Advanced job search analytics\n- 🤖 AI-assisted job search tools\n- 🧩 Browser extension for quick application adding\n\n---\n\n## 👤 Author\n**Mahmoud**\n- GitHub: [@mahmoudsaad111](https://github.com/mahmoudsaad111)\n- LinkedIn: [mahmoud-saadeddin-13a9981b4](https://www.linkedin.com/in/mahmoud-saadeddin-13a9981b4)\n\n## 📄 License\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmoudsaad111%2Fjobapptracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmahmoudsaad111%2Fjobapptracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmoudsaad111%2Fjobapptracker/lists"}