Casablanca, Morocco

Oussama Amjahdi

Software engineer · ITSM and BPM workflows

At work I build and run process and IT service platforms. On my own time I build tools like the four below: a process engine, a task board, an inbox tracker and a live bus map. Each one opens in a click.

Projects

Four tools I designed and built end to end. Three of them have a live demo.

Circuit

An administrator describes a process in one sentence and gets a form and an approval flow. Requests then run through approvals, tasks, a signature and an audit trail.

  • Live demo
  • 2026
  • React
  • TypeScript
  • Vite
  • Tailwind CSS
  • Zustand

An administrator types what should happen, in French or English. Circuit reads the sentence and proposes a form, the steps, who does each one, deadlines and notifications. It also lists what it assumed and what the sentence leaves open.

The workflow builder, with the generated VPN access steps on a canvas and a step inspector on the right.
The builder. Every step of the proposal can be changed before publishing.
The form tab of the builder, with fields on the left and a live preview of the form.
The form, with a live preview.
The employee portal listing published processes as cards.
What an employee sees. Published processes become a portal.

Key decisions

  • Processes are data. Nothing in the interface or the engine names a specific process. Templates, the generator and the builder all produce the same Blueprint, and one interpreter runs every request. A VPN request and a purchase run through exactly the same code.
  • The engine is pure. Engine functions take the database and a timestamp and change the data. They never read the clock, the screen or storage. That is why the same code runs live requests, the sandbox in the builder, and the seeded history, which is produced by running the real engine on a simulated clock.
  • The generator says what it is. It is a rule-based parser of about 600 lines, not a language model. It recognises kinds of request, field lists, a dozen actors, thresholds, parallel work, deadlines and signatures. When it guesses, it says so in the proposal.

TaskCraft

A task and project manager for a small team, written in plain JavaScript, with a mock REST backend that enforces who can do what.

  • Live demo
  • 2026
  • JavaScript
  • HTML
  • CSS
  • Chart.js

TaskCraft has a dashboard, a task list and a kanban board with drag and drop, projects with their own progress and hours, a team page, analytics and notifications. A search box finds tasks and projects, and the top bar scopes everything to one project.

The kanban board with columns To do, In progress, In review and Done.
The board. Cards move by drag and drop; the mock API checks the move.
A task drawer seen as a member, with the fields and the delete button disabled.
The same task seen by a member. The fields and delete are disabled.
A project page with progress, a compact board and estimated against logged hours.
A project, with its own board and hours.

Key decisions

  • Permissions live on the server side. The mock API checks every call against the role and answers 403 when it is not allowed. The interface hides or disables what a role cannot do, but that is a courtesy. The rule is enforced underneath it.
  • One seam to a real backend. Views call services, services call one HTTP client, and only that client knows the backend is a mock. The docs folder describes the REST contract and a PostgreSQL schema, so replacing the mock changes one file.
  • Everything rendered is escaped. Views are template strings, so every value goes through one escaping function. Routing reads only a page name and an id from the address, and those are matched against fixed patterns.

WorkFlow Intelligence

It reads exported emails and rebuilds the work inside them, what I am doing, what I am waiting for, what I finished and what I may be forgetting.

  • Walkthrough
  • 2026
  • React
  • TypeScript
  • Vite
  • Express
  • SQLite
  • Drizzle

You export a folder of emails from Outlook or another client and drop it on the import page. The app stores them in a local SQLite file, groups them into conversations, and reads each conversation in order.

A work item with its status, deadline and project, and a table of the sentences that moved it from To do to Completed.
One work item and why the analysis thinks so, sentence by sentence.
The follow-ups page listing promises without a reply, unanswered questions and deadlines.
Follow-ups. What I promised, what I was asked, what is late.
A timeline of work events across days.
The timeline across all conversations.

Key decisions

  • Local by default. The server listens on 127.0.0.1 only. The default analysis is a set of local rules that needs no key. Cloud models are optional and only used after the user ticks a consent box in Settings.
  • Every status change shows its evidence. A status the user cannot question is useless. Each transition stores the date, the signal, the quoted sentence and the effect, and the item shows them as a table.
  • The user wins. When I edit a field, it is locked. When I set a status, only emails newer than my change can move it again.

SchoolTrack

Parents see their child's bus come closer, drivers run the trip from their phone, and the operator watches the whole fleet.

  • Live demo
  • 2026
  • React
  • TypeScript
  • Vite
  • Tailwind CSS
  • Zustand
  • Leaflet
  • Interface: French

Three buses drive their morning routes. The parent screen follows one child's bus and shows the time and distance to the child's stop, with alerts at one kilometre, 300 metres and 100 metres. The driver screen shows the next stop, who is on board, and buttons to start the trip, arrive at a stop, board a student and finish.

The operator's live view with a map of the three buses and the details of bus 101.
The operator's live view.
The routes page listing each route with its stops and times.
Routes, stops and scheduled times.

Key decisions

  • Everything follows from one number. For each bus the store keeps the distance it has travelled along its route. Position, heading, speed, distance and time to any stop, progress and alerts are all derived from that number.
  • A seam for real GPS. Screens read through small services, never from the store directly. Real positions from drivers' phones would replace the inside of gpsService and the simulation, not the screens.
  • Notifications only for who needs them. A parent sees alerts about their own child's stop, a driver about their own bus, the operator about everything. At most two pop up at once; the rest wait in the list.
4projects on this page
3live demos to try
180automated tests in Circuit
3languages I work in

Try it

Describe a process

This is the generator from Circuit. Pick an example or write your own sentence, and the form and the approval steps build themselves as you type.

Instant · rule-based

Proposal for VPN Access Request: 3 fields, 3 steps.

The form

VPN Access Request

  • Employee *User
  • Department *Department
  • Justification *Long text

Who acts, in order

  1. Manager approval
    Approval · Requester's manager · within 8 h
  2. IT Security validation
    Task · IT Security · within 24 h
  3. Activate access
    Task · Network · within 24 h

What it assumed

  • Deadlines that were not stated use defaults: 8 hours for a manager, 24 to 48 hours for teams.
  • A rejection closes the request and tells the requester why.

How I build

Three habits you can check in the code of the projects above.

A process is data

In Circuit every process is a form and a tree of steps. One engine runs all of them, so a new process never needs new code.

See it in Circuit

One source of truth

In SchoolTrack each bus is one number, the distance it has travelled. Position, speed, arrival times and alerts all follow from it.

See it in SchoolTrack

Experience

ITSM and BPM workflow developer

Consultant, IT services of a banking group

June 2025 to now

  • Designed and evolved BPM workflows from business specifications, such as the redesigned equipment process for new hires: manager approval, stock reservation, technical and administrative checks, automatic closing.
  • Built request forms, approval circuits and portals for each profile, including the hardware life-cycle portal: request, approval, reservation, assignment, return.
  • Integrated the ITSM platform with Jira to automate security incidents: tickets created automatically, statuses, comments and attachments synced both ways, notifications and closing (REST, OAuth2, webhooks).

Full-stack developer, Java and Angular

Internship

January to June 2025

  • A consultant management platform: Spring Boot REST API with roles and Keycloak sign-in, Angular interface with profiles, filtered search and administration.
  • A matching engine between job offers and consultants, combining ElasticSearch and OpenAI embeddings.
  • An open banking integration of the Mifos X core banking system with Spring Boot and Angular, on PostgreSQL.

Full-stack developer

Internship

April to October 2024

  • Microservices and a subscription platform, with Vue.js, Spring Boot and Keycloak.

About

I'm a software engineer in Casablanca. At work I build and run IT service and business-process platforms. The projects on this page are what I build on my own time. I work in Arabic, French and English.

Next on my list

Moving Circuit to a server with PostgreSQL, real sign-in and email notifications.

Skills

Used in the projects on this page

Languages and front end

  • TypeScript (used in these projects)
  • JavaScript (used in these projects)
  • React (used in these projects)
  • Astro (used in these projects)
  • HTML and CSS (used in these projects)
  • Tailwind CSS (used in these projects)
  • Leaflet (used in these projects)

Back end

  • Java
  • Spring Boot
  • Node.js (used in these projects)
  • Express (used in these projects)
  • REST APIs (used in these projects)

Data

  • PostgreSQL
  • MySQL
  • SQL Server
  • SQLite (used in these projects)
  • Drizzle ORM (used in these projects)

Infrastructure and tooling

  • Docker
  • Git (used in these projects)
  • Linux
  • VMware
  • Vite (used in these projects)

IT service and process

  • ITIL practices
  • ITSM platforms
  • BPM and workflow tools
  • Power BI

Testing

  • Vitest (used in these projects)
  • Playwright (used in these projects)
  • node:test (used in these projects)

Let’s talk

About a role, a project, or one of these demos. Email is quickest; I read LinkedIn too.

oussamaamjahdi@gmail.com