Skip to content

vkh-cr/festapp

Repository files navigation

Festapp

Festapp is a cross-platform mobile and web app for festivals, conferences, and events. It provides organizers and attendees with powerful tools like schedules, maps, notifications, tickets, forms, and much more.


Features

  • Available on Android, iOS, and Web.
  • Event is available for offline use (Android, iOS, Web/PWA).
  • Dark and light modes are available.
  • Volunteer Management: Dedicated staffing system for managing tasks, shifts, and assignments.

  • Schedule
    • Timeline – Schedule overview by time and day.
    • Event detail – Includes: Time, Place (with link), Content, Subevents, Sign In/Sign Out button.
    • Timetable – View event entries on the axes of Time and Place.
    • My schedule – Attendee can add event entries to their own list.

schedule2 schedule1 schedule5 schedule3

  • Map
    • Map with current user location, places, and paths with custom icons and descriptions. It is also possible to set up an offline map (Android, iOS).

map1 map2 map4

  • News/Notifications
    • Receive news and push notifications relevant to the event.
    • Push notifications are supported on all platforms – Android, iOS, and Web.

news3 news2

  • Info/Songbook/Game

    • Various information about the event, a Songbook with font-size increase/decrease, and a groups-based code-guessing game.
  • Administration/Feature settings

    • Overview of all event data, map, groups, users, rights, and other settings.
    • Setup of multiple events.
  • User/Companions/Workshops

    • User profile with personal data.
    • Ability to import users from a table.
    • Creation of events with limited capacity (workshops) and creation of companions.
    • QR code for workshop entry verification.

user1 user3 user4 user5

  • Ticket/Form/Seat reservation
    • Support for creation of custom forms (similar to Google Forms) with priced products.
    • Creation of custom tickets with custom graphics.
    • Creation of a seat reservation component.

form1 form3 form4 form5

  • Orders/Transactions

    • Order management, bank payment synchronization, automated sending, and creation of paid tickets.
  • Email Templates

    • Customization of all email templates.

email1 email2 email3

  • Ticket scanning
    • QR-code-based ticket verification.

Architecture

This project is built using the Flutter framework and the Dart programming language.

For the backend, it uses Supabase, a serverless platform. It includes:

  • Deno functions written in TypeScript
  • PostgreSQL scripts for database operations

Key Architectural Highlights:

  • Offline-First: The app is designed to work fully offline (critical for festivals). It uses a robust caching strategy (OfflineDataService) and local databases.
  • SQL-Centric Logic: A significant portion of business logic (orders, games, permissions) resides in PostgreSQL Functions (RPC) rather than Dart code.

[!TIP] For Developers & AI Agents:
Please consult AI_README.md for a deep architectural deep-dive, component analysis, and "Split Brain" logic documentation.


Configuration

The project uses a centralized configuration system driven by automation/project.conf. This file is the single source of truth for:

  • Deployment: Domain settings (DOMAIN, CNAME).
  • Application: Supabase credentials (SUPABASE_URL, ANON_KEY), Organization ID, and integration links.
  • Theme: Brand colors (THEME_SEED_1...4) which are automatically applied to both Flutter (app_config.dart) and Web Client (theme_config.css).
  • Fonts: Font family configuration (FONT_FAMILY_BASE) and form scaling.
  • Version: Application version (VERSION), propagating to pubspec.yaml, package.json, and the app.

Applying Configuration

After editing automation/project.conf, apply changes by running:

./automation/apply_config.sh

This script automatically:

  1. Updates all relevant configuration files.
  2. Auto-detects and installs fonts from automation/fonts/.
  3. Synchronizes version numbers.

Setup

For a helpful step-by-step guide on creating your own app, see howto.md.


Currently in production

Under similar names usually available in AppStore and Google Play Store.


Latest development

2024.11

  • Cyber Space game added to the app, enabling group gameplay and submission of codes found in the real world.
  • Schedule event editing page introduced, along with a new quick add button for the schedule.
  • Songbook now supports a changeable dark/light theme and adjustable text size.
  • Food support added, including information about user's choice.
  • Accommodation support added with links to places on the map.
  • Invitation based system implemented using invitation codes.
  • Progress dialog in DataGrids now indicates success or error, with the option to cancel mid-action.
  • Update prompt now allows setting a minimum version requirement for each platform.
  • Launch event logging includes app version and platform details.
  • Install screen updated with enhancements and instructions.
  • Profile button moved to the bottom app bar.
  • Admin page refined with sub-tabs, preparing for dynamic configuration features.

2024.10

  • Support for multi-organizations.
  • New bottom app bar.
  • Dark/light mode, styles, and colors refactoring (e.g., clickable links are in different colors now).

2024.09

  • Refactoring and support for multiple events.
  • Support for linking multiple events.

2024.08

  • Admin dashboard to support multiple events.
  • Better support of linking of anything inside the app.
  • Optimized loading for information.
  • Compression for large images and automatically converting links, emails, and phone numbers to clickable hypertext.
  • Colorful emoji for web.

2024.07

  • Full support for offline display mode on web (and pwa app).
  • Notifications support for web (and pwa app).
  • Settings page (enable notifications, language).
  • Install page with links to install app on phone or PC (example: https://live.festapp.net/#/install ).

2024.06

  • Optimized data usage for events and information.
  • Enabled custom icons for map places.
  • Zooming in/out for Timetable.
  • Displaying current time in Timetable and Time Travel component.
  • Generated QR code for users and companions.
  • Approver page for checking QR codes and workshop attendees.

2024.05

  • User registration flow and sign-up page.
  • Companion feature: Users can create a limited number of companions and assign them to workshops.

2024.04

  • Reset password flow.
  • Enabled event type and hiding.

2024.03

  • Specialized page for song lyrics.
  • Database and URL support for multiple events.

2024.01

  • Full support for offline display mode (if connection is not available, data from cache will be used). Simply open the application once and data will be loaded in the background.
  • Timetable display of the program (scrollable page with a time axis and locations).
  • Creation of my program using the + button (even without the need to log in).
  • Full support for URLs (ability to link to pages in the web version of the application).
  • Ukrainian language added among the languages.


AI Integration (MCP)

This project supports the Model Context Protocol (MCP) to allow AI assistants to interact with the project environment.

Chrome Automation (Puppeteer)

To enable AI agents to control a headless Chrome instance (e.g., for end-to-end testing or automation), use the Puppeteer MCP server:

./automation/start-mcp-puppeteer.sh

This script exposes Chrome Developer Tools capabilities via the MCP protocol.

Supabase Integration

To enable AI agents to interact with the Supabase database and management API:

1. Postgres Database Access Allows direct SQL queries and schema inspection. Requires DATABASE_URL in .env.local.

./automation/start-mcp-db.sh

2. Supabase Management Allows project management and log inspection. Requires SUPABASE_ACCESS_TOKEN in .env.local.

./automation/start-mcp-supabase.sh

About

The app was originally developed by a team of volunteers for Absolventský Velehrad event in 2023.

Releases

No releases published

Packages

No packages published

Contributors 7