Skip to content

Service for people. Software for the love of it.

I am Marco Schuchardt and I am doing an apprenticeship as a Kaufmann für Verkehrsservice on the ICE — a German apprenticeship in passenger transport services, part in the company and part at vocational school.

Programming is not part of it, that is a hobby. No ready-made tool brought lessons, the company and the training record together properly, so I write the applications I need myself: with Laravel, on my own server, in daily use instead of in a drawer. This page shows what I am working on and what has come out of it.

Portrait photo of Marco Schuchardt

Current

What I am working on

The current state, not a chronicle. Everything here is still in progress.

  • August 2026 Opening the Ausbildungsorganizer to two classmates: invitations, separate data and a WebUntis login of their own for each person.
  • August 2026 Class notes stay in Obsidian. The organizer reads them and takes the topics into the training record.
  • August 2026 This home page as a public entry point. It works without a login and shares no data with the Ausbildungsorganizer.

What else is going on →

Projects

Selected work

Each of these projects came out of a problem of my own, not out of an exercise. And each one runs day to day, not just on my machine.

All seven projects in 36 seconds, no sound. The screens show sample data, not real data.

Ausbildungsorganizer

In use

Laravel · MySQL · Tailwind

Problem
The timetable, the class tests, the homework and the training record sat in four separate systems. What was due next could only be answered by looking in several places. The company side had no fixed place at all: practical days, absences, holiday, contacts and who to notify.
Solution
One application with two parts. School holds the timetable, marks, homework and dates. The timetable comes from WebUntis, dates are synced with the calendar, homework with the task list. Company holds the training record, absences and the work calendar; every two weeks the training record goes to my trainer as a PDF on its own. Sick notes and travel expenses are built, holiday is announced in the menu. Usable by several people, with strictly separated data.
Screenshot of Ausbildungsorganizer

Lernen-App

In use

Standalone application

Problem
Preparing for an exam is repetition, but without any overview of which subject area really sticks and which one was only skimmed once.
Solution
Questions and repetitions per subject area, with visible progress and a record of study time. Deliberately a separate application with its own data, because it holds lesson and exam material that must not get out.
Screenshot of Lernen-App

Finanzkompass

Being built

Laravel

Problem
Budgeting apps calculate with an average household. An apprentice’s pay with irregular items does not fit that pattern.
Solution
Income, spending and savings targets tailored to my own balance, including an import of the bank statements instead of typing them in, a checklist for the fixed costs of each month and a page for the tax year.
Screenshot of Finanzkompass

Second Brain

In use

Markdown · MCP

Problem
Notes, saved posts and knowledge were scattered across apps that know nothing about each other. Mostly I only found what I already had in mind.
Solution
A knowledge store made of Markdown files that I can query with AI. Short videos I save are transcribed and filed. Every entry names its source; anything private carries a mark and is missing from answers for anyone else.

Runs in the background. There is nothing to look at, only results.

Automatisierung

In use

n8n · Ollama

Problem
Sorting mail and documents costs time every week, and deadlines slip through easily.
Solution
Rules in n8n sort and remind me of deadlines. The analysis runs on a local language model, so no content travels to external AI services. Anything unclear stays put until I have checked it.

Runs in the background. There is nothing to look at, only results.

Betrieb und Monitoring

In use

Docker · Dokploy · GlitchTip

Problem
Several applications run on servers of my own. Without an overview, an outage or a missing backup only shows up when it hurts.
Solution
Everything is run through Dokploy. Errors are collected in GlitchTip, databases are backed up externally every day, and a restore is actually tried, not just set up.

Runs in the background. There is nothing to look at, only results.

Fitness-Coach

Being built

Laravel · Vue · PostgreSQL

Problem
Training, body and nutrition data sit in different apps. Turning them into a training plan means collecting numbers by hand.
Solution
A web application pulls the data from several sources together and derives a training plan from it. From the nutrition app the data comes through its interface; access credentials stay out of the code.

Runs in the background. There is nothing to look at, only results.

Path

What was built when

Pulled from the Git histories of the projects, not from memory. What's written here actually happened.

1,941 commits
5 applications
68 days since the first
  1. 2 August 2026 Lernen-App started, 349 commits since then, most recently 21 September.
  2. 8 August 2026 Ausbildungsorganizer started, 1,046 commits since then, most recently 7 October.
  3. 8 August 2026 Finanzkompass started, 357 commits since then, most recently 7 October.
  4. 23 August 2026 Fitness Coach started, 42 commits since then, most recently 20 September.
  5. 25 August 2026 This site started, 147 commits since then, most recently 7 October.

Background

How I got here

Short and without embellishment: the steps that led to what's written above.

  • 2022 Fachhochschulreife, the school-leaving certificate for a university of applied sciences.
  • 2022–2023 A Freiwilliges Soziales Jahr — a year of voluntary social service.
  • 2023–2024 A year of computer science at university. The part that stayed is above under “Projects”.
  • 2024 – expected summer 2027 Apprenticeship as a Kaufmann für Verkehrsservice, vocational school in block weeks.
  • Hobby My own web applications with Laravel, run by me on a Linux server behind Docker and a reverse proxy.
  • Next A dual degree in business informatics, preferably in Kassel.

On the side

What I do when there is no screen

Running, gym, bike. I am good at none of it, and honestly not consistent with all of it either. But it reliably gets me away from the desk.

Running

Five kilometres

Never alone: I run with bond.projct, a running group without any competition. With other people, five kilometres is a different distance than alone.

Gym

Twice a week

So says the plan. The plan and I renegotiate this every week.

Bike

Now and then

Like running, only further away. And the way back is harder.

Laravel Blade MySQL Tailwind CSS Dokploy Docker Traefik FrankenPHP Cloudflare GlitchTip Umami Playwright Immich Nextcloud Paperless Vaultwarden

Portfolio

What I can do

Learned on my own projects, the ones that are actually in operation, with everything that comes with it: finding faults in a running system, data protection, and recovery after an outage. It started at university and carried on on the side.

I work with AI tools while doing it. The design, the architecture decisions and the review are mine. What I have not understood does not go into operation.

Application development

  • PHP and Laravel
  • MySQL and data modelling
  • HTML, Tailwind CSS, JavaScript
  • Connecting to other systems’ interfaces

Operations

  • Docker and deployments
  • Automated tests in the pipeline
  • Backup and restore
  • Finding faults in a running system

Servers and infrastructure

  • Linux server administration
  • Running services, applying updates
  • Reverse proxy, domains and TLS
  • Accounts, permissions and hardening

How I work

  • Git and pull requests
  • Writing requirements down
  • Data protection from the start
  • Accessible interfaces

What I do it with →

Reading

Notes and travel

What goes wrong while building, and what happens in between.

All notes Search

Contact

Write to me

Whether about one of the projects, about the apprenticeship, or because you are building something similar yourself: email reaches me fastest.