Skip to content
View codewithmahad's full-sized avatar
⚙️
Building backend systems with Java & Spring Boot
⚙️
Building backend systems with Java & Spring Boot

Block or report codewithmahad

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
codewithmahad/README.md

Hey, I’m Mahad. An illustrated workbench.

I’m Shaikh Mahad Ud Din, a developer from Karachi, Pakistan, focused on Java and Spring Boot.

I started with native Android apps in Kotlin and Jetpack Compose. Building screens got me interested in the part I couldn’t see: how an application decides who can do what, where its data belongs, and what happens when a request goes wrong.

That curiosity is what brought me to backend development. I build Spring Boot APIs, work with relational databases, and keep pulling apart the pieces until I can explain how they fit. I want to follow a request from the controller to the database and understand the service logic, security rules, and queries along the way.

A little more about my path

BS Software Engineering at UBIT, University of Karachi brought programming, databases, and operating systems into the same picture for me. My repositories give me somewhere to keep working through them.

The Android chapter is still here:

  • Derivify: a native Android toolkit for multivariable calculus, built with Kotlin and Jetpack Compose.
  • Quizzler: the quiz app I built for my second-semester OOP project.

I also founded The UBIT Hub. Sharing notes and building small tools for that community is another reason I keep making things.

What I use, and what I’m working on

Java logo  Java
My main language for backend work. I’m going deeper into Java internals, object-oriented design, and the patterns that make code easier to change.

Spring logo  Spring Boot & Spring Security
APIs, authentication, access control, and application layers. MapStruct handles DTO mapping in my backend projects.

PostgreSQL logo  Databases
PostgreSQL, MySQL, SQL, and Flyway. I’m working on schema design, migrations, and understanding the queries an application depends on.

Git logo  Everyday tools
Git for version control, Maven for builds, Linux and Bash for the environment, Postman for API requests, and IntelliJ IDEA for development.

Alongside project work, I practise DSA and work through design patterns and query performance. The aim is to understand the tools well enough to explain the choices I make.

A small server made of filing drawers, with a brass key.Backend projects

Fitness Tracker API ↗︎
A MySQL-backed workout API with JWT authentication, user roles, and input validation. This is where I’m putting the layers of a Spring Boot backend together.

Spring Boot Starter ↗︎
A reusable starting point with separated layers, database migrations, and API documentation. The setup I don’t want to repeat for every new idea.

Inside these projects

Fitness Tracker: Java, Spring Boot, Spring Security, MySQL, and MapStruct. The project brings workout data, authentication, role-based access, validation, and DTO mapping into one application.

Spring Boot Starter: Java, Spring Boot, Flyway, MapStruct, and OpenAPI. It brings together the project structure, migration setup, mapping, and documentation I want ready before starting the next backend.

What I’m paying attention to: where controller, service, and repository responsibilities meet; what data crosses those boundaries; and how access and validation rules fit into the request flow.

Each repository has its own setup instructions and implementation details.

A little penguin reading a Linux notebook.Learning notes

LINUX_LAB ↗︎ started in my Operating Systems lab. It’s where I work through commands, permissions, processes, and Bash scripts and write the explanation I wish I’d had when something didn’t make sense.

Other notebooks: Java · SQL · Data structures & algorithms

A small shared noticeboard with paper notes.The UBIT Hub

I founded The UBIT Hub, a community connecting 900+ UBIT students through course support, academic discussion, and peer learning.

Good notes shouldn’t disappear into an old group chat after finals. Our shared resources collect notes, assignments, and lab material for the next person who needs them.

The resources and tools behind the community

The resource repository gives course material a place people can return to. It’s the same reason I keep my own learning notes: something that took time to understand should be easier for the next person to find.

I also built the UBIT Semester Results Dashboard using Next.js and TypeScript, with GPA calculations, rankings, and PDF exports.

These projects connect the two parts of my GitHub: learning how things work, and making something useful with what I learn.

Say hello

This profile changes as I build. You’ll find backend projects, Linux notes, and tools for The UBIT Hub here. Follow me on GitHub if you’d like to see what comes next.

If a repo helped you, left you with a question, or sparked an idea, I’d like to hear about it. I go by codewithmahad on most platforms.

LinkedIn: connect with me Portfolio: see my work Email: write to codewithmahad@gmail.com

Coding profiles & practice

 LeetCode    HackerRank     GeeksforGeeks     Codolio

Psst. There’s one more drawer. Secret drawer: a tiny penguin, a spare key, and a note. Pick one of the links below.

Follow the penguin → a Linux rabbit hole.
Take the spare key → a look at authentication.
Pass the note → something useful for the next student.

Monkeytype’s typing monkey.From 60 to 120+ WPM

I started learning touch typing in 2023 so I could keep my eyes on the screen and stop searching for keys. It helps with code, notes, and everyday messages. If typing still slows you down, try a short test on Monkeytype and give yourself a starting point.

My personal bests and what helped

I was around 60 WPM when I started, before joining Monkeytype. Reaching 120+ WPM came gradually with practice. A few recorded bests from my profile:

Test WPM Accuracy
15 seconds 156 100%
30 seconds 144 96%
60 seconds 133 96%
120 seconds 117 94%

What I notice day to day is fewer interruptions: I can keep my attention on a command, a sentence, or the problem I’m working through. That’s useful whether you write code, lecture notes, or emails.

Start with a short test, work on accuracy, and come back for a few minutes regularly. Keep your first score. It’s satisfying to look back at it later.

Pinned Loading

  1. Derivify-Calculus-Toolkit Derivify-Calculus-Toolkit Public

    A native Android app for Multi-Variable Calculus, built with Kotlin and Jetpack Compose.

    Kotlin 3

  2. Quizzler-App Quizzler-App Public

    A quiz app for Android named Quizzler. This was built as my final project for a 2nd-semester Object-Oriented Programming (OOP) course.

    Kotlin 1

  3. fitness-tracker-backend fitness-tracker-backend Public

    Layered Java Spring Boot backend for a fitness tracking platform featuring REST APIs, JWT security, and database persistence.

    Java

  4. spring-boot-25-enterprise-template spring-boot-25-enterprise-template Public template

    Production-ready Spring Boot 4 & Java 25 starter template. Features PostgreSQL, Flyway migrations, OpenAPI (Swagger), Actuator, and MapStruct for rapid, scalable REST API developme

    Java

  5. The-DSA-Blueprint The-DSA-Blueprint Public

    A complete DSA Roadmap & Strategy Guide for University Students. From Syntax to FAANG. 🇵🇰

  6. SmartTip-App SmartTip-App Public

    A Smart Tip Calculator app built with Jetpack Compose in Kotlin, allowing users to calculate tips efficiently.

    Kotlin