Future website of the club Helmstedter Chor- und Singschule
Find a file
2025-10-29 17:00:57 +01:00
e2e Removed demo test files for now 2025-05-22 21:08:22 +02:00
src Changed startpage id to 0 2025-05-23 16:46:56 +02:00
static Formatting 2025-05-15 21:47:11 +02:00
.dockerignore Adjusted .dockerignore 2025-05-04 14:25:48 +02:00
.editorconfig Updated editorconfig 2025-05-17 15:36:18 +02:00
.env.example Added missing comment to .env.example 2025-05-03 20:41:49 +02:00
.gitignore Finalized update to svelte 5, tailwind 4 and drizzle 2025-05-03 19:51:19 +02:00
.npmrc Initial commit 2024-10-20 18:03:27 +02:00
.prettierignore Ignore .pnpm-store 2025-05-18 22:26:57 +02:00
.prettierrc Migrated to new file structure 2025-04-29 16:44:34 +02:00
Dockerfile Update Node.js to v22.21.1 2025-10-29 16:00:48 +00:00
drizzle.config.ts Finalized update to svelte 5, tailwind 4 and drizzle 2025-05-03 19:51:19 +02:00
entrypoint.sh Made a default database file 2025-05-22 21:58:32 +02:00
eslint.config.js Added eslint settings 2025-05-17 15:31:35 +02:00
flake.lock Formatting 2025-05-17 15:29:11 +02:00
flake.nix Updated flake file 2025-05-17 09:56:51 +02:00
LICENSE.md Added LICENSE.md 2025-05-09 16:29:08 +02:00
package.json Update dependency prettier-plugin-tailwindcss to ^0.7.0 2025-10-29 17:00:57 +01:00
playwright.config.ts Migrated to new file structure 2025-04-29 16:44:34 +02:00
pnpm-lock.yaml Update dependency prettier-plugin-tailwindcss to ^0.7.0 2025-10-29 17:00:57 +01:00
README.md Formatting 2025-05-17 15:33:53 +02:00
renovate.json Formatting 2025-05-17 15:29:11 +02:00
svelte.config.js Changed svelte adapter from auto to node 2025-05-03 23:47:58 +02:00
tsconfig.json Migrated to new file structure 2025-04-29 16:44:34 +02:00
vite.config.ts Fixed code with new eslint config 2025-05-17 18:17:22 +02:00
vitest-setup-client.ts Migrated to new file structure 2025-04-29 16:44:34 +02:00

HCSS Website

A modern, low-maintenance website for the Helmstedter Chor- und Singschule e.V. (HCSS) designed to replace the old site with a solution that simplifies media and event management.

Overview

This project serves as the official website for HCSS e.V. It was developed to reduce maintenance overhead, particularly when adding new media content or events. The website features a clean, responsive design with an intuitive admin interface for content management.

Technology Stack

This project utilizes modern web technologies to ensure performance, reliability, and ease of maintenance:

Features

  • Responsive design that works across desktop and mobile devices
  • Content management system for easily updating website sections
  • Event announcement management
  • Media gallery for photos
  • Admin panel for content management
  • Authentication system

Getting Started

Prerequisites

  • Node.js (v22.10 is recommended)
  • pnpm (recommended package manager)
  • Nix (optional, for reproducable a dev environment)
  • Podman (optional, works with Docker aswell)

Installation

  1. Clone the repository:

    git clone https://git.eiflerstrom.de/IC3P3/hcss-website.git
    cd hcss-website
    
  2. Install dependencies:

    pnpm install
    
  3. Set up environment variables:

    • Create a .env file with the following variables:

      DATABASE_URL=./data.db
      
  4. Initialize the database:

    pnpm db:push
    

Development

Start the development server:

pnpm dev

This will start the development server at http://localhost:5173.

Building for Production

Build the project for production:

pnpm build

Preview the production build:

pnpm preview

Building an image for Production

Build with Podman:

podman build .

Copy the hash of the image and run the image:

podman run -p 3000:3000 -e DATABASE_URL=/app/data.db <IMAGE HASH>

Database Management

This project uses Drizzle ORM with SQLite. Database schema changes are managed using Drizzle Kit.

Apply schema changes to the database:

pnpm db:push

Explore and manage your database with Drizzle Studio:

pnpm db:studio

Content Management

The admin panel can be accessed at /admin (login required). From here, you can:

  • Create and manage events
  • Upload and organize media
  • Update site content by changing images in different sections
  • Link media items to events

Data Models

The application uses the following main data models:

  • Events: Performances and activities with dates, times, and locations
  • Media: Images with subtitles that can be linked to events
  • Content: Website content sections that can reference media items
  • Users & Sessions: Authentication system for admin access

Testing

The project includes both unit and end-to-end testing:

Run unit tests:

pnpm test:unit

Run end-to-end tests:

pnpm test:e2e

Run all tests:

pnpm test

Code Quality

Maintain code quality with the following commands:

Format code:

pnpm format

Lint code:

pnpm lint

Svelte diagnostics:

pnpm check

# OR to run it constantly

pnpm check:watch

Deployment

Server Requirements

  • Node.js (v18 or newer, recommended is v22)
  • Alternatively to Node.js is docker or podman recommended
  • Minimum 1GB RAM
  • 10GB disk space (adjust based on media storage needs)

Traditional Deployment Steps

  1. Build the project:

    pnpm build
    
  2. Start the server in production mode:

    NODE_ENV=production node build
    
  3. For production deployment, consider using a process manager like PM2:

    npm install -g pm2
    pm2 start build/index.js --name "hcss-website"