matteoscrugli 76a3e51bbc Fix mobile bottom padding on first page load
Re-measure tab bar height when tabBarPosition changes from 'top' to
'responsive'. This fixes the issue where bottom padding was incorrect
on first load because the CSS variable was measured before the backend
loaded the responsive position setting.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 14:07:58 +01:00
2025-12-05 09:53:16 +01:00

Service App

Modern web application for service management. Built with React, FastAPI, and SQLite.

Features

  • User management (admin)
  • Authentication (JWT) + 2FA (TOTP) + API keys
  • Active sessions (view/revoke)
  • Audit log + analytics (admin)
  • In-app notifications
  • Modern, responsive UI with theming
  • Fully containerized with Docker

Technology Stack

Frontend

  • React 19 + TypeScript
  • Vite (build tool)
  • React Router
  • Axios

Backend

  • FastAPI (Python 3.11+)
  • SQLAlchemy 2.0 (ORM)
  • SQLite (Database)
  • Alembic (migrations)
  • JWT authentication

Infrastructure

  • Docker + Docker Compose

Quick Start

Prerequisites

  • Docker and Docker Compose
  • Git

Installation

  1. Clone the repository:
git clone <repository-url>
cd <repository-folder>
  1. Copy environment variables:
cp .env.example .env
# Edit .env with your configuration
  1. Generate secret key:
openssl rand -base64 32
# Add to .env as SECRET_KEY
  1. Start all services:
docker-compose up -d
  1. Access the application:

Project Structure

.
├── docker-compose.yml
├── backend/              # FastAPI application
│   ├── app/
│   │   ├── api/         # API routes
│   │   ├── models/      # SQLAlchemy models
│   │   ├── schemas/     # Pydantic schemas
│   │   ├── services/    # Business logic
│   │   └── main.py      # Entry point
│   └── alembic/         # Database migrations
├── frontend/            # React application
│   └── src/
│       ├── components/  # React components
│       ├── pages/       # Page components
│       ├── api/         # API client
│       └── hooks/       # Custom hooks
└── scripts/             # Utility scripts

Configuration

Environment Variables

See .env.example for all available configuration options.

Key variables:

  • SECRET_KEY: JWT secret key
  • ALLOWED_HOSTS: CORS configuration

Persistent Data

  • SQLite database: sqlite:////config/config.db (bind-mounted via ./config:/config)
  • Uploads: /config/uploads by default (can be overridden with FILE_STORAGE_PATH)

Contributing

Feel free to fork and customize for your needs.

Description
Modern web application template
Readme 1.7 MiB
Languages
TypeScript 43.8%
Python 31.5%
CSS 24.1%
Dockerfile 0.3%