matteoscrugli 9c15d1dec5 Simplify mobile bottom padding to match desktop spacing
Use fixed 24px padding for mobile bottom tab bar instead of complex
variable calculations. This provides consistent spacing that matches
the desktop visual appearance.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 15:08:27 +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%