Enterprise .NET · 2 min read
Symorgh: learning backend engineering inside an ERP
My early backend experience was in Symorgh, an enterprise platform with an Angular frontend and a layered C#/ASP.NET Core backend. I contributed within an existing team and codebase, working in the context of connected business processes rather than a standalone demonstration app.
- My role
- Backend Developer Intern at Borhan Sharif · 2021–2022
- Project scope
- Client-owned enterprise system · private source
Result and scope
Early experience contributing to a connected enterprise backend in C# and ASP.NET Core.
The main responsibilities in this workflow.
- Angular business interface
- ASP.NET Core API
- Business services
- Repositories / unit of work
- Entity Framework Core and MySQL
An ERP exposes the connections between records
The project includes workflows for projects and activities, warehouse items, procurement, invoices, and payments. It also has users, roles, permissions, messages, and notifications. The interesting part is how those records relate: a task can require a part, a warehouse movement affects availability, and financial records need to refer to the business action they represent.
Working in an existing ERP taught me to trace a backend change through the business process around it, from related records to the permissions and screens that use them.
How the backend is organized
The source separates API, data, repository, service, and helper projects. Entity Framework Core and MySQL provide persistence, with an Angular application consuming the backend. The repository layer includes project, warehouse, financial, authorization, and messaging responsibilities.
A unit-of-work interface brings related repositories into the application layer. This structure gives a concrete example of separation between request handling, business services, and persistence. It is also a reminder that folder structure is only the beginning: correctness depends on how a particular operation uses those boundaries.
Permissions belong to the business model
The codebase contains both policy-based and resource-based authorization components. In an enterprise application, access is more specific than whether a user is logged in. A person's role and relationship to a resource can affect which operations are appropriate.
I contributed within an existing team and architecture. Working with resource-aware access rules gave me a foundation for later commerce and CRM development.
Project notes
Backend internship at Borhan Sharif, 2021–2022. Module descriptions explain the shared system context; my contribution was within the existing team. Client source is private.