Status Trio
Status Trio는 macOS 메뉴바 앱으로 Wi‑Fi·배터리·볼륨을 하나의 아이콘에 통합합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기LMS originating from Timberline Secondary School's Digital Hackerspace
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗LMS originating from Timberline Secondary School's Digital Hackerspace
Running a deck? The ByteDeck User Guide walks deck owners and teachers through getting started.
Although bytedeck uses several tools, you only need to set up two of them thanks to docker!
The instructions below will help you get bytedeck running using docker, and then help you set up a development environment with VS Code.
The instructions assume you are using Ubuntu (or another Debian based linux distro), although it is possible to get it working anywhere you can install docker.
Follow the instructions the for installing Docker Engine. https://docs.docker.com/engine/install/, if using Ubuntu and you don't want Docker Desktop, you can install just the enginge from their repository: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
By the end, you should be able to run docker's test image:
$ sudo docker run hello-world
As a sanity check, make sure docker compose works too:
$ docker compose --version
If you can't run docker without sudo, you can try adding yourself to the docker group (is this still needed? I don't think so)
sudo usermod -aG docker $USER
Using a different version of Python will probably give you errors when installing the dependencies due to slight changes between versions:
sudo apt install python3.12
develop branch, make sure you are on that branch.mkdir ~/Developercd ~/Developergit clone yoururlhereThis will create your docker containers and initialize the database by running migrations and creating some initial data that is required:
Open a terminal
Move into the project directory:
cd ~/Developer/bytedeck
Copy the example environment file to the one you'll be using. Docker-compose and django will both be looking for a .env files with various settings that you can customize. If you are not running the app locally (e.g. production), then be sure to set DOMAIN_ROOT to the FQDN.
cp .env.example .env
Build the containers (db, redis, celery, and celery-beat):
docker compose build
Start the postgres database container (db) in the background/daemonized (-d)
docker compose up -d db
OPTIONAL: For development, we can run the django app in a local virtual environment (venv) instead of using the web container, however if this gives you any issues, just run everything in a container with docker compose (explained below)
Create a python virtual environment (we'll put ours in a venv directory):
python -m venv venv --prompt bytedeck
Enter the virtual environment:
Linux / macOS
source venv/bin/activate
Windows (bash)
source venv/Scripts/activate
Windows
venv/Scripts/activate
Install wheel to prevent errors (why isn't this included in the new venv module?)
python -m pip install wheel
Install our requirements:
python -m pip install -r requirements.txt
Initialize pre-commit:
pre-commit installdocker compose run web bash -c "pre-commit install"Run a management command to run initial migrations, create the public tenant, superuser, and some other stuff:
python src/manage.py initdbdocker compose run web bash -c "python src/manage.py initdb"Now run the django development server:
python src/manage.py runserverdocker compose up webYou should now get the page at http://localhost:8000. Note that the ip/url output by the django server, will not work in this project, because our multitenant architecture requires a domain name, so you need to use instead.
If everything has worked so far, you should now be able to create your own Bytedeck website (aka a new "deck") as a new tenant:
If the server isn't already running, start it with:
python src/manage.py runserver
ordocker compose up web
(Ignore the link it outputs; it won’t take you to the right place.)Go to http://localhost:8000/decks/new/ to create a new deck.
Note: You may be prompted to log in to the Django admin interface before accessing the page.
Use the following credentials:
- Username:
admin- Password:
password(Defined inTENANT_DEFAULT_SUPERUSER_PASSWORDin your.envfile)
Fill in all required fields and click the Create button at the bottom.
You’ll now be at the login page. To log in as the default admin:
adminpassword
(Defined in TENANT_DEFAULT_SUPERUSER_PASSWORD in your .env file)To log in as the owner of the deck:
_sent_mail directory._sent_mail directory.firstname.lastname)You should now be inside your own Bytedeck site!
To stop the project:
Ctrl + C in the terminal windowsNew tenants will come with some basic initial data already installed, but if you want masses of data to simulate a more realistic site in production:
python src/manage.py generate_content hackerspacedocker compose exec web bash -c "python src/manage.py generate_content hackerspace"This will create 100 fake students, and 5 campaigns of 10 quests each, and maybe some other stuff we've added since writing this! You should see the output of the objects being created. Go to your map page and regenerate the map to see them.
Some examples of the command in use:
$ python src/manage.py generate_content --help
# lists positional arguments and optional flags
$ python src/manage.py generate_content --quiet
# Generates fake students, campaigns, and quests without printing anything to the console
$ python src/manage.py generate_content hackerspace --num_quests_per_campaign 7 --num_campaigns 3
# Creates 3 campaigns of 7 quest each. Additionally creates 100 students because `--num_students` were unspecified
$ python src/manage.py generate_content hackerspace --num_students 50
# Creates 50 fake students. Additionally creates 5 campaigns of 10 quests each because both `--num_quests_per_campaign` and `--num_campaigns` were unspecified
$ python src/manage.py generate_content hackerspace --num_quests_per_campaign 7 --num_campaigns 3 --num_students 50
# create 50 fake students, and 3 campaigns of 7 quests each.
Here are the steps, assuming that you now have a functional tenant:
http://hackerspace.localhost.net:8000/accounts/google/login/callback/. We will explain why we are using localhost.net later.Client Id and Secret Key from the Google OAuth Client ID, then add the Available Sites to Chosen SitesEnable google signin for tenant(s) from the admin actions at the bottom, and click Go.When you are developing locally, Google won't allow you to add http://hackerspace.localhost:8000/accounts/google/login/callback/ in the Authorized URIs. So we need a way to bypass this in our local machine by mapping our localhost to localhost.net so we can access our tenant via http://hackerspace.localhost.net:8000.
You need to modify your hosts file by adding this to the bottom of /etc/hosts:
127.0.0.1 localhost.net hackerspace.localhost.net
Update the ALLOWED_HOSTS in the project's .env file:
ALLOWED_HOSTS=.localhost,.localhost.net
Let django-tenants know that hackerspace.localhost.net is also a valid domain. Run $ ./src/manage.py shell and type in the following commands
from tenant.models import Tenant
tenant = Tenant.objects.get(schema_name='hackerspace')
tenant.domains.create(domain='hackerspace.localhost.net', is_primary=False)
http://hackerspace.localhost.net:8000/ and use the Google Sign In. Note that Google Sign In will only work using the .net url.The ByteDeck User Guide is built from the docs/ folder with MkDocs and the Material theme (mkdocs.yml sets the page order). The User Guide workflow checks it on every PR that changes it and publishes it to GitHub Pages when the PR merges to develop. To preview your changes:
pip install -r docs/requirements.txt
mkdocs serve --dev-addr 127.0.0.1:8100 # then open http://127.0.0.1:8100/bytedeck/ (Django has 8000)
Pages are Markdown files under docs/, and their screenshots live in docs/images/. Take screenshots from a real deck, cropped to the part of the page the text talks about.
See CONTRIBUTING.md if you plan to contribute code to this project. It contains critical information for your pull request to be accepted and will save you a lot of time!
0.0.0.0localhostAnd you should be able to log in to the admin site at http://localhost:8000/admin/
Run redis, celery and celery-beat containers (you can run in the background too if you want with -d, but you won't see any errors if they come up). the db container should already be running:
docker compose up -d redis celery celery-beat
To view errors in the containers when they are running in the background, you can use:
docker compose logs -f