Skip to content

vkh-cr/festapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,722 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 docs/architecture/ai_context.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 docs/setup/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.



Development

Prerequisites

  • FVM (Flutter Version Management): This project adheres to a specific Flutter version using FVM.
    • Install FVM: dart pub global activate fvm
    • Install project SDK: fvm install

Running the App

Always prefix flutter/dart commands with fvm:

# Get dependencies
fvm flutter pub get

# Run on Chrome
fvm flutter run -d chrome

# Run code generation
fvm dart run build_runner build --delete-conflicting-outputs

For detailed project architecture and internal documentation, please refer to docs/architecture/ai_context.md.


About

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

Releases

No releases published

Packages

 
 
 

Contributors