Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Sichere ProgrammierungKI half beim Finden: iOS 27 schließt mehr als 100 Sicherheitslücken(21.09.2026 um 06:00 Uhr)
Sichere ProgrammierungWhat Is Rowhammer? How Can Repeated Memory Access Flip Bits in RAM?(21.09.2026 um 07:12 Uhr)
Sichere Programmierungnpm publish Ignores .gitignore: The .npmignore Override Rule(21.09.2026 um 07:15 Uhr)
Sichere ProgrammierungAphelion Editor - A free node-based video / VFX editor(21.09.2026 um 07:21 Uhr)
Sichere ProgrammierungGovernance Attack Surface Review: OKX(21.09.2026 um 07:31 Uhr)
Sichere ProgrammierungJSM Portal Request Create Property Panel Submit(21.09.2026 um 07:34 Uhr)
Reverse Engineeringsearch instructions assembly easy (X86,RISCV,AARCH64,etc)(20.09.2026 um 15:44 Uhr)
Sichere ProgrammierungKI half beim Finden: iOS 27 schließt mehr als 100 Sicherheitslücken(21.09.2026 um 06:00 Uhr)
Sichere ProgrammierungWhat Is Rowhammer? How Can Repeated Memory Access Flip Bits in RAM?(21.09.2026 um 07:12 Uhr)
Sichere Programmierungnpm publish Ignores .gitignore: The .npmignore Override Rule(21.09.2026 um 07:15 Uhr)
Sichere ProgrammierungAphelion Editor - A free node-based video / VFX editor(21.09.2026 um 07:21 Uhr)
Sichere ProgrammierungGovernance Attack Surface Review: OKX(21.09.2026 um 07:31 Uhr)
Sichere ProgrammierungJSM Portal Request Create Property Panel Submit(21.09.2026 um 07:34 Uhr)
Reverse Engineeringsearch instructions assembly easy (X86,RISCV,AARCH64,etc)(20.09.2026 um 15:44 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

I built a free shift calendar app as a solo developer — here's how

Reagiere als Erste:r — dein Feedback zählt!

The problem

Millions of people work rotating shifts — nurses, security guards, factory workers, firefighters. Most of them organize their schedules on paper, WhatsApp groups, or spreadsheets. Every month, the same question in the group chat: "Am I working Saturday?"

I decided to build something better.

What I built

Turna is a free shift calendar app designed specifically for shift workers. You can:

  • 🎨 Paint shifts on a calendar with custom colors
  • 🔄 Generate rotating sequences automatically (e.g., Morning → Afternoon → Night → Off → Off)
  • 👥 Share your calendar with your partner or coworkers in real time
  • 📊 Track statistics — hours worked, days off, breakdown by shift type
  • 🌙 Use dark mode for night shifts

It's available as a web app at app.turna.es and on Google Play as a TWA.

👉 Landing page: turna.es

The tech stack

I wanted to keep things simple and fast:

Layer Technology
Frontend Vue.js 3 with Composition API, pure CSS (no frameworks)
Backend Python + FastAPI
Database PostgreSQL
Auth FastAPI Users with JWT tokens
Hosting Linux VPS with Nginx
Mobile PWA + TWA built with Bubblewrap

No React, no Next.js, no Tailwind, no Docker — just the basics, done well. The entire frontend is a single HTML file + a JS file. Total bundle size: tiny.

Key decisions

PWA + TWA instead of native apps. I'm one person. Building native apps for iOS and Android would take months. Instead, Turna is a PWA (installable from the browser) wrapped as a TWA for Google Play using Bubblewrap. One codebase, available everywhere.

Pure CSS instead of a framework. Bootstrap and Tailwind are great, but for a calendar app where every pixel matters, I wanted full control. The result: a fast, lightweight UI that feels native on mobile.

FastAPI for the backend. Python is what I know best, and FastAPI is incredibly productive for building REST APIs. Auto-generated docs, async support, and type validation out of the box.

Paint mode. This was the feature that changed everything. Instead of filling forms to add shifts, you just select a shift type and tap days on the calendar. Like painting. Users can set up an entire month in 10 seconds.

The hardest parts

Shared calendars with diagonal view. When two people share calendars, their shifts need to appear overlaid on the same day cells. I implemented a CSS diagonal split — the top-left triangle shows one person's shift, the bottom-right shows the other. Simple idea, tricky implementation.

Timezone handling for statistics. Shifts stored as dates in the database, but JavaScript Date objects converting to UTC when calling the API. Night shifts on the last day of the month would "disappear" from statistics because UTC conversion pushed them to the next month. Fixed by ensuring the query range always includes 23:59:59 of the last day.

TWA splash screen. Getting the splash screen to look right on Android required matching background_color in both the web manifest and the TWA manifest, plus properly formatted maskable icons. Lots of trial and error.

Current status

  • ✅ Web app live at app.turna.es
  • ✅ Android app in closed testing on Google Play
  • ✅ 12+ testers
  • ✅ Landing page at turna.es
  • 🔜 Public release on Google Play
  • 🔜 Premium features (Google Calendar export, push notifications)

What I learned

  1. Ship early, iterate fast. My first version was ugly. Users didn't care — they cared that it worked.
  2. Build for a specific audience. "Calendar app" is too broad. "Shift calendar for nurses" is a niche I can win.
  3. A solo developer CAN ship a full product. Frontend, backend, database, PWA, TWA, landing page, Play Store listing — it's a lot, but it's doable if you keep the stack simple.

Try it

If you work shifts (or know someone who does), give it a try and let me know what you think! Feedback is always welcome.

Built by JLODev — Web development & apps.

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten I built a free shift calendar app as a solo developer — here's how

Thematisch verwandte Begriffe: built, free, shift, calendar · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-94030 | A security vulnerability has been detected in SerenityOS up to 3d83e4509…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick