{"id":22320477,"url":"https://github.com/timothyjan/pplpro","last_synced_at":"2025-03-26T04:29:47.717Z","repository":{"id":259284270,"uuid":"877475294","full_name":"TimothyJan/PplPro","owner":"TimothyJan","description":"Employee Management System with Angular (frontend), C# .NET MVC (backend), and SQL (database)","archived":false,"fork":false,"pushed_at":"2024-11-11T23:58:14.000Z","size":17209,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T06:08:24.822Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","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/TimothyJan.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}},"created_at":"2024-10-23T17:59:44.000Z","updated_at":"2024-11-11T23:58:18.000Z","dependencies_parsed_at":"2024-10-24T04:18:38.745Z","dependency_job_id":"ec42b4fc-1367-4ce9-85c9-25fec37a910b","html_url":"https://github.com/TimothyJan/PplPro","commit_stats":null,"previous_names":["timothyjan/pplpro"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimothyJan%2FPplPro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimothyJan%2FPplPro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimothyJan%2FPplPro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimothyJan%2FPplPro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimothyJan","download_url":"https://codeload.github.com/TimothyJan/PplPro/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245588918,"owners_count":20640193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-04T00:13:48.594Z","updated_at":"2025-03-26T04:29:47.694Z","avatar_url":"https://github.com/TimothyJan.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PplPro\nFull-stack Employee Management System using ASP.NET Core, Angular, Bootstrap, and Azure SQL, implementing DTOs for data transfer, repository patterns for data access, and RESTful APIs for efficient employee, department, and role management, successfully deployed to Azure.\n\nProcess:\n\u003cul\u003e\n  \u003cli\u003eSet up Azure SQL Database\n    \u003cul\u003e\n      \u003cli\u003eCreate SQL database and choose pricing(free or basic lol).\u003c/li\u003e\n      \u003cli\u003eConfigure firewall settings(add local machine's IP address)\u003c/li\u003e\n      \u003cli\u003eGet Connection String.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n  \u003cli\u003eCreate ASP.NET Core API Project\n    \u003cul\u003e\n      \u003cli\u003eCreate Project.\u003c/li\u003e\n      \u003cli\u003eAdd Required NuGet Packages\n        \u003cul\u003e\n          \u003cli\u003e\u003ccode\u003eMicrosoft.EntityFrameworkCore\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003eMicrosoft.EntityFrameworkCore.SqlServer\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003eMicrosoft.EntityFrameworkCore.Tools\u003c/code\u003e\u003c/li\u003e\n          \u003cli\u003e\u003ccode\u003eSwashbuckle.AspNetCore\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eDefine Models(Department, Role, Employee) and Data Transfer Objects (DTOs).\n        \u003cul\u003e\n          \u003cli\u003eDTOs allow you to shape the data sent to the client and avoid exposing the navigation properties that cause cycles.\n          \u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eCreate Database Context Setup\n        \u003cul\u003e\n          \u003cli\u003eDbContext is used for querying data, tracking changes, saving data and managing relationships.\u003c/li\u003e\n          \u003cli\u003eRestrict delete behavior to prevent cascading deletes for roles and departments.\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eSet up model repository for each model (DepartmentRepository, RoleRepository, EmployeeRepository)\n        \u003cul\u003e\n          \u003cli\u003eRepository layer is a design pattern that abstracts and centralizes data access logic, providing a clean separation between the data layer and the business logic, improving maintainability, flexibility, and testability.\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eCreate Controllers for each Model.\u003c/li\u003e\n      \u003cli\u003eSet Up Environment Variables, specifically the connection string.\u003c/li\u003e\n      \u003cli\u003eConfigure Program.cs to use connection string from environmental variables.\u003c/li\u003e\n      \u003cli\u003eRun Database Migrations.\n        \u003cul\u003e\n          \u003cli\u003eTools -\u003e NuGet Package Manager -\u003e Package Manager Console.\u003c/li\u003e\n          \u003cli\u003e~\u003ccode\u003eAdd-Migration InitialCreate\u003c/code\u003e too add initial migrations. Generate a migration file in a folder called Migrations. The file contains the SQL schema changes required to create tables and relationships based on your models.\u003c/li\u003e\n          \u003cli\u003e~\u003ccode\u003eUpdate-Database\u003c/code\u003e will use the connection string in appsettings.json to connect to the Azure SQL Database and apply the schema changes defined in the migration.\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eInitialize the Database with Sample Data. Create a SeedData.cs.\u003c/li\u003e\n      \u003cli\u003eConfigure Program.cs to use SeedData.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n  \u003cli\u003eDesign frontend and set Up Angular Frontend to Communicate with the API.\n    \u003cul\u003e\n      \u003cli\u003eInstall dependencies\n        \u003cul\u003e\n          \u003cli\u003eBootstrap\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eCreate Models (Department, Role, Employee)\u003c/li\u003e\n      \u003cli\u003eGenerate components(Create and List) and services for Department, Role, Employee.\u003c/li\u003e\n      \u003cli\u003eConfigure Angular Environment Variables for development and production using environment.\u003c/li\u003e\n      \u003cli\u003eSet up HTTP Interactions, connecting Angular to ASP.NET Core API.\u003c/li\u003e\n      \u003cli\u003eEnable CORS in ASP.NET Core.\u003c/li\u003e\n      \u003cli\u003eBuild Angular for production\n        \u003cul\u003e\n          \u003cli\u003e~\u003ccode\u003eng build --configuration production\u003c/code\u003e\u003c/li\u003e\n        \u003c/ul\u003e\n      \u003c/li\u003e\n      \u003cli\u003eCreate \u003ccode\u003ewwwroot\u003c/code\u003e folder and add teh created production browser files (favicon.io, index.html, main, polyfills, and styles) from the dist folder.\u003c/li\u003e\n      \u003cli\u003eConfigure Program.cs to UseDefaultFiles and UseStaticFiles.\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n  \u003cli\u003eDeploy to Azure App Service\n    \u003cul\u003e\n      \u003cli\u003eCreate an Azure App Service.\u003c/li\u003e\n      \u003cli\u003eSet Environment Variables in Azure.\u003c/li\u003e\n      \u003cli\u003eModify Program.cs to Support Swagger\u003c/li\u003e\n      \u003cli\u003ePublish\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n  \u003cli\u003eDeal with many deployment issues such as Swagger.\u003c/li\u003e\n\u003c/ul\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimothyjan%2Fpplpro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimothyjan%2Fpplpro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimothyjan%2Fpplpro/lists"}