Skip to experience

Birmingham, UK

Hybrid / Remote

Rajea Bilal

Full-Stack Developer

React · Next.js · TypeScript · Node.js · AI

I build products for founders. Having run my own online business, I write code with the customer in mind.

  • Sole developer for two founders: a Stripe payments app and a school-performance platform.
  • Won the NaironAI hackathon with CliniBridge, built in 24 hours.
  • Sold 2,000+ products through my own Etsy shop, with 300+ five-star reviews.

View my work

Portrait of Rajea Bilal

About

I build products from start to finish.

I'm a full-stack developer working mostly with React, TypeScript, Node.js and PostgreSQL. I've built a café operations dashboard, a payments app for creators, a student-performance platform for schools, and a hackathon-winning tool that helps rare-disease patients find clinical trials.

I've also run two e-commerce businesses, including MimarSinanStudio (opens in a new tab). That's where I learned to think about the person on the other end: what they need, what it costs them, and how much time a feature actually saves.

Right now I'm building Fawna (opens in a new tab), which marks children's maths worksheets and shows parents what to practise next.

Tech stack

Frontend

  • React
  • Next.js
  • TypeScript
  • JavaScript
  • CSS
  • Tailwind CSS
  • TanStack Start / Router / Query
  • React Router v7
  • Redux

Backend and data

  • Node.js
  • Express
  • REST APIs
  • PostgreSQL
  • Drizzle
  • Prisma
  • MongoDB
  • Convex
  • Supabase
  • Stripe
  • Square

AI and development

  • OpenAI API
  • LangChain
  • Vercel AI SDK
  • Claude Code
  • Git worktrees
  • RAG

Deployment

  • AWS
  • Docker
  • Terraform
  • Docker Compose
  • GitHub Actions
  • Linux
  • Nginx
  • Vercel

Auth and accessibility

  • Clerk
  • JWT
  • BetterAuth

semantic HTML · keyboard navigation · focus states · ARIA


Experience

  1. Full Stack Developer

    Refueler Plus

    2026 · Client project

    • Built a fuel-dispatch dashboard using React, TanStack Router and TanStack Query, helping dispatchers prioritise sites, plan refuelling schedules and provide job details through a handheld Field View.
    • Built backend APIs using Node.js, Express and TypeScript, with Drizzle and PostgreSQL for data, Supabase Auth for sign-in and Supabase Storage for job PDFs.
    • Built PDF processing with unpdf and fixed a blank-field bug that picked up neighbouring numbers; limited each search to its own field and added a regression test.
    • Ran parallel Claude Code sessions in separate Git worktrees after shared-folder interference, then reviewed and merged the changes.
    • unpdf
  2. Full Stack Developer Contract

    Caf-Ops via Code & Creed

    Remote · Sep 2025 – Feb 2026

    caf-ops.com (opens in a new tab)

    Caf-Ops landing page and operations dashboard
    • Built dashboards for café sales, staffing and inventory using React, React Router v7, TypeScript and Tailwind CSS, with Convex backend functions and Clerk authentication.
    • Mapped Square menu sales to ingredient quantities and built a waste dashboard comparing expected usage with inventory changes to estimate waste costs.
    • Used Convex subscriptions to update dashboard figures when saved summaries changed. Fixed Square OAuth method calls and token-response handling, then tested the connection in sandbox.
    • Worked with the founder and senior developer through GitHub pull requests, submitting features for review before merging them into the shared codebase.
  3. Full Stack Developer Contract

    BuyMeADrink

    Remote · Nov 2025 – Jan 2026

    buymeadrink.app (opens in a new tab)

    BuyMeADrink creator profile and gifting screens
    • As sole developer, built creator and supporter journeys with React Router v7, TypeScript, Convex and Clerk, using Stripe Checkout and Stripe Connect for payments and creator onboarding.
    • Connected frontend screens to backend payment and order states, showing clear feedback for successful, pending and failed transactions.
    • Fixed production “Send Support” failures by tracing apparent Stripe errors to Convex query return validators that no longer matched the gift fields, then updating the validators.
  4. Freelance Full Stack Developer

    Acorn AI

    Notary Public Birmingham website with its AI assistant
    • Built a responsive website from scratch using React, TypeScript, TanStack Router and Tailwind CSS, giving customers access to services, pricing, FAQs and contact options.
    • Added a streaming OpenAI chatbot with the Vercel AI SDK, using the client’s business information to answer service questions and direct visitors towards enquiries and bookings.
    • Built a validated in-chat enquiry form connected to a backend API and Supabase, saving contact details and conversation context so staff could follow up on customer requests.
  5. Full Stack Developer

    EduKata

    EduKata student performance dashboard
    • As sole engineer, delivered a React, Node.js, Express and PostgreSQL MVP in three months, working with the founder to turn spreadsheet reporting into student-performance dashboards.
    • Implemented the assessment logic provided by the founder, a Deputy Head, and used Prisma to connect student, subject and assessment records for the dashboards.
    • Built CSV imports that checked required fields and duplicate records, matched subject-name variations, and processed valid rows while reporting problems with the uploaded data.
    • Set up Docker and GitHub Actions to build and publish backend images to DigitalOcean Container Registry, making packaging repeatable and supporting handover.

Personal projects

Fawna landing page: a parent and child working through a worksheet at a kitchen table

Personal product · In development

Fawna

For tired parents in the evening: snap a photo of your child’s maths worksheet and Fawna uses AI to mark it, tag each wrong or blank answer with one of 116 primary maths skills from the England National Curriculum (Years 1–6), and suggest targeted practice for what to work on next.

Built with Claude Code from written requirements, running parallel sessions in separate Git worktrees, then reviewing and merging the changes.

BunnyPunch start screen: a pixel-art title, a bunny in a hole and a Start Game button

Browser game

BunnyPunch

Playful camera-based browser game that turns your real hand into the controller using live webcam tracking, letting you move a cursor and punch bunnies in real time. Built as an interactive experiment in hand tracking, collision detection, and React performance.

  • Howler.js
  • Webcam API
  • requestAnimationFrame
The HUDHUR popover showing three lines of dhikr

macOS App · Launching soon

HUDHUR

A native macOS menu-bar app that gently brings your attention back to Allah while you work: once an hour, three quiet lines of dhikr, with nothing to open and nothing to clear.

My contribution

I designed the identity and the workflow, then built the app with Claude Code, from menu-bar behaviour and reminder scheduling to the SwiftUI popover and release prep.

CliniBridge landing page: “Clinical trials that make sense”, with options to get matches or search by diagnosis

NaironAI Hackathon winner

CliniBridge

Hackathon-winning platform designed to help rare-disease patients find relevant clinical trials using AI-assisted matching from patient descriptions. Built in 24 hours, with “Understand This Trial” explaining eligibility in plain English.

  • clinicaltrials.gov API

Cloud and DevOps

Built while training in AWS. I took them down to avoid running costs, so the write-ups and screenshots are on GitHub.

  • Serverless student API

    Architecture drawing: Postman calls API Gateway, which invokes the addStudent and getAllStudents Lambda functions that write to and read from DynamoDB

    A small API that saves and lists student records without running a server. A request goes through API Gateway to a Lambda function, which writes to or reads from a DynamoDB table. Each function only has the permissions it needs. I added API keys, a usage plan and WAF rate limiting, then tested the whole flow in Postman.

    • API Gateway
    • Lambda
    • DynamoDB
    • IAM
    • AWS WAF
  • Custom VPC

    VPC diagram: a public subnet with a public EC2 instance and NAT gateway, a private subnet with a private EC2 instance, and an internet gateway

    My own network on AWS, set up by hand: a public subnet with a website on EC2, and a private subnet with a server the internet can’t reach directly. I configured the internet gateway, NAT gateway, route tables and security groups, and used the public server as a bastion host to reach the private one. The bug that taught me the most: a route table does nothing until it’s associated with its subnet.

    • VPC
    • EC2
    • NAT gateway
    • Route tables
    • Security groups

Education and more

School of Code
Full-Stack Software Development · Selected from 3,000+ applicants
Bachelor of Arts
Arabic Studies
Founder, MimarSinanStudio
2019 – 2026 · Built an e-commerce store to 2,000+ sales and 300+ five-star reviews.
AWS and DevOps, CoderCo
Training in progress · Built StackYard with Docker Compose, Flask and Redis, a traffic dashboard and an Nginx reverse proxy that distributes requests across Flask instances.


Offline

Away from the screen.

I spend time with the things that keep me curious — history, architecture, photography, and design. They slow me down, give me perspective, and influence how I approach my work.


Contact

Let's build something worthwhile.