Skip to content
Koray Öztürkler edited this page Sep 27, 2025 · 1 revision

Welcome to the Hack_NCState Planning Committee! If you want to contribute to the dashboard https://today.hackncstate.org/, please review the following information. I will assume you are using Visual Studio Code but feel free to use any editor.

Setup

Set up Flutter (frontend)

  • Install the Flutter SDK via these instructions.
  • Open the frontend folder of the repo in your favorite editor.
  • Run flutter pub get to install dependencies.
  • Run flutter pub run build_runner watch to start the code generator. Keep this running during development.
  • Run the app with flutter run -d --web-port 8080

Set up Firebase (backend)

  • Install Python v3.13. If you use VSCode, install this extension
  • Install the Firebase CLI via these instructions. This will allow you to emulate the backend on your local machine during development.
  • Open the firebase folder of the repo in your favorite editor.
    • Open a terminal in the functions folder
    • Run python3 -m venv venv to create a Python environment
    • Run .\venv\Scripts\activate on Windows or source venv/bin/activate on Mac/Linux to enter the environment
    • Install Python dependencies with pip install -r requirements.txt
    • Read through the configuration wiki page to configure your Firebase Emulator.
  • Run firebase emulators:start in the root folder to start the emulator.

Note for VSCode Users

You can automate many of the commands by renaming the .vscode.example folders to .vscode.

  • E.g. firebase/.vscode/tasks.json defines a task that runs the Firebase emulator when you open the project.
  • frontend/.vscode/tasks.json defines a task that runs build_runner when you open the project.
  • frontend/.vscode/launch.json defines a configuration that runs the app with the necessary port
  • etc.. Please do this after completing setup.

Why Flutter? Why not React?

While the main goal for Flutter is mobile app development, it's still pretty good for building PWAs (progressive web apps), which behave like desktop or mobile applications. I also personally think it's more pleasant to write than React, though I may be biased because I don't really know much React (I am not a web developer). I also think it's easier to pick up for new developers because the language is so similar to Java while simultaneously being optimized for app development. I encourage you to read more about how Flutter works.

Why Firebase? Why not a custom backend?

Firebase offers all the tools we need (user management, live database, authentication, functions) under one roof. It's also good for rapid development that's less error-prone and handles secure API access for us. Since Hack_NCState is in February, I think repid development is very important. Also, it lets us write custom functions in Python or JavaScript which is a plus. I encourage you to read more about how Firebase works.

Clone this wiki locally