AssistITk12

Getting Started (Install & Deploy)

How to install, configure, and deploy AssistITk12, the free help desk and ticketing system for K-12 districts.

This guide walks through setting up AssistITk12 for the first time, from prerequisites to your first login. AssistITk12 is a self-hosted Flask application, so you’ll need a server (or local machine) to run it on.

Prerequisites

Before you begin, make sure you have:

  • Python 3.13+
  • Git
  • UV — the Python package manager AssistITk12 uses for dependency management
  • MySQL Server — for production use (a lighter local database also works for testing)

1. Clone the repository

git clone https://github.com/victorhugo81/assistitk12.git
cd assistitk12

2. Create a virtual environment and install dependencies

uv sync

This creates a virtual environment and installs Flask 3.1.2 and every other dependency pinned in the project.

3. Configure your environment

Copy the example environment file and fill in your own values — database connection string, a secret key, and SMTP credentials for outbound ticket notifications:

cp .env.example .env

At minimum you’ll want to set your MySQL connection details and a unique SECRET_KEY. SMTP credentials and user emails are encrypted at rest, so it’s safe to store them here.

4. Seed the database

Run the project’s database setup/seed step to create the schema and an initial administrator account. Check the repository README for the exact current command, as it may include separate migration and seed steps.

5. Run it

For local testing, start the Flask development server directly. For production, run behind Gunicorn with a reverse proxy (nginx or similar) in front of it, and configure a Redis instance to back login rate limiting.

gunicorn -w 4 -b 0.0.0.0:8000 wsgi:app

6. Log in and configure your organization

  • Log in with the administrator account created during seeding.
  • Set up your organization details under Settings.
  • Add your school sites if you support more than one location.
  • Bulk-upload staff accounts with the CSV template rather than adding them one at a time.

Security notes

AssistITk12 ships with several protections enabled by default:

  • Login rate limiting (Flask-Limiter) and account lockout after repeated failed attempts
  • CSRF protection on all forms
  • Password hashing via Werkzeug’s secure defaults
  • Enforced password complexity — minimum 12 characters with mixed character types

Next steps

  • Read the product overview for a full feature breakdown.
  • Invite your IT team and assign roles.
  • Share the ticket submission link with staff and students.
  • Star and watch the GitHub repository for updates.