I am a Backend Software Engineer who builds reliable APIs, business systems, automation scripts, and full-stack features. I care about clean architecture, readable code, strong data modeling, and software that is easy to maintain after the first release. Basically: I try to make the backend boring in production, which is the highest compliment a backend can receive.
- Building and improving e-commerce, API-driven, and business workflow systems.
- Strong with Node.js, Express.js, NestJS, TypeScript, C#, .NET, SQL, MongoDB, REST APIs, and backend integration work.
- Experienced across CRM, ERP, procurement, inventory, product support, marketing, sales, accounting, and student attendance systems.
- Comfortable moving between backend logic, database design, frontend integration, debugging, automation, and deployment workflows.
- Interested in scalable backend practices, DevOps, design patterns, system design, and developer productivity.
- Professional bug negotiator: I listen to errors, disagree respectfully, then fix the root cause.
| Role Backend Software Engineer |
Focus APIs, systems, automation |
Main Stack Node.js, .NET, TypeScript |
Superpower Making bugs explain themselves |
| Area | What I deliver |
|---|---|
| Backend APIs | RESTful services, authentication, authorization, validation, business rules, integrations, and documentation. |
| Business systems | CRM, ERP, inventory, procurement, sales, accounting, and internal workflow tools. |
| Database work | Schema design, SQL queries, MongoDB models, data relationships, reporting needs, and performance-minded access patterns. |
| Full-stack features | API-to-UI implementation with React, Next.js, Tailwind, Bootstrap, jQuery, and practical UX decisions. |
| Automation | Scripts that save time, reduce repeated work, and politely stop humans from doing robot chores. |
Backend architecture APIs that are easy to extend and reason about
Design patterns Cleaner boundaries, fewer surprises, better maintainability
DevOps fundamentals Deployment flow, containers, Nginx, CI/CD, Linux workflows
System design Practical scalability for real product requirements
E-commerce systems Catalogs, orders, payments, dashboards, and integrations
Debugging style Reproduce, isolate, fix, celebrate with exactly one dramatic sighMorning Coffee, planning, pretending the backlog is smaller than it is
Coding APIs, data models, services, validation, tests, and "just one more refactor"
Debugging Reading logs like detective notes
Meetings Translating business needs into tasks the code can understand
Deployment Calm face, careful checks, suspiciously refreshed dashboards
After hours Anime, music, gaming, and learning something I will absolutely use later| Experience | Highlights |
|---|---|
| .NET Developer | Built and maintained business software across CRM, ERP, procurement, inventory, support, marketing, sales, and accounting domains. |
| Backend Developer | Worked with Node.js, Express.js, APIs, MongoDB, JavaScript, TypeScript, and backend service logic. |
| Full-stack Training | Completed full-stack development practice with Route, covering frontend, backend, APIs, and project delivery. |
| Scrum Master Practice | Supported planning, coordination, task clarity, and iterative delivery habits. |
| Trait | In production |
|---|---|
| Curious | I ask why until the feature makes sense, or until the database starts looking nervous. |
| Practical | I like clean abstractions, but I also like shipping before the heat death of the universe. |
| Calm debugger | Error messages are not enemies. They are badly written clues. |
| Team-minded | I document decisions because future me deserves kindness too. |
| Product-aware | Code is great, but solved user problems are better. |
- Write readable code first, then optimize with evidence.
- Keep APIs predictable, documented, and easy to consume.
- Model data around real business behavior, not just screens.
- Prefer simple architecture that can grow naturally.
- Debug carefully, document decisions, and leave projects easier to maintain.
- Never trust "it works on my machine" until the server agrees.
- Treat logs like receipts: boring until something needs explaining.
package main
type Developer struct {
Name string
Username string
Role string
Focus []string
Stack []string
Values []string
Interests []string
}
func main() {
me := Developer{
Name: "Ahmed Raouf",
Username: "Ahmed-Raouf-Metwally",
Role: "Backend Software Engineer",
Focus: []string{"Web APIs", "Backend architecture", "Automation", "Business systems"},
Stack: []string{"Node.js", "Express.js", "NestJS", "TypeScript", "C#", ".NET", "SQL", "MongoDB"},
Values: []string{"Clarity", "Reliability", "Maintainability", "Continuous learning"},
Interests: []string{"Problem solving", "Clean systems", "Anime", "Music", "Gaming", "Convincing bugs to retire"},
}
_ = me
}Top languages are based on public repositories and do not represent total experience or skill level.
I am always open to useful collaboration, backend-heavy products, and teams that care about clean delivery.







