Never get lost in the ticketing jungle!
BATTS is a ticketing system in development by students of Innopolis University
Its end goal is to unite all of the various ticketing systems that exist in Innopolis by developing a new, universal one written using more maintainable stack that php.
Right now BATTS supports the very basics of ticketing: you can create groups and send tickets to them for processing.
Autorization is performed though Telegram.
BATTS is designed to be intuitive and simple to use. If you do not understand how to do X, open an issue and we will figure it out.
You can visit our deployed instance here: https://batts.tatar/
Be careful however, it updates frequently and we wipe it quite often
The project, as of now, consists of the following components:
- True Backend -- written in Rust using Actix, following CQRS framework for data storage
- Front-Back -- Sveltekit, used for Server Side Rendering and routing
- True Frontend -- Svelte + Typescript + Tailwind, using some of the Flowbite components
- Analytics Engine PostHog
- Search Engine Meilisearch
- Object store MinIO
We put a lot of emphasis on keeping our technological stack modern and as usable as possible.
We provide dockerfiles and docker images for the backend and frontend. We also provide the Kubernetes manifests we use.
The only thing that we do not provide for you is PostHog deployment as it is best to follow their instructions as their product is massive.
If what you want is to deploy the app to develop it here is what you can do.
To try developing frontend you need to first set up the backend. For it you enter backend
folder and use docker-compose up -d
, it should build and make backend active.
Then you need to set up authorization. Since usual authorization does not work in dev environment set up a mock one.
First create a user:
curl -X PUT --location "http://localhost:3000/api/users/FDUeanyKADQEpyrydYn7XB" \
-H "Content-Type: application/json" \
-d "{
\"profile\": {
\"type\": \"Telegram\",
\"id\": 123456,
\"first_name\": \"Edward\",
\"last_name\": \"Snowden\"
}
}"
The second step is to get a cookie for the created user:
curl -vvv -X POST --location "http://localhost:3000/api/fake-login/FDUeanyKADQEpyrydYn7XB"
The third step is to add this cookie to your browser. You would want a browser extension or addon for that.
In frontend directory create (or edit) .env
file to contain:
BACKEND_URL=http://localhost:3000
After this you are good to use yarn
and yarn dev
and begin working on the frontend.
In case you want to develop backend, the process is as follows:
First set up meilisearch:
docker run -it --rm \
-p 7700:7700 \
-e MEILI_ENV='development' \
-d --name meilisearch \
getmeili/meilisearch:v1.4
In the near future you may need to set up minio for object storage:
docker run -dt \
-p 9000:9000 -p 9090:9090 \
--name "minio_local" \
minio server --console-address ":9090"
After this export the environment variable:
ENVIRONMENT=dev
Then you are good to use cargo run
to build and run the backend.
For now the project is in active development, but after that you may contribute to it by either forking it, or submitting issues and merge requests to cover them. Please make sure that your code at least passess relevant linters if you want it to be accepted and make sure to test your version locally for both desktop and mobile.