{"id":39877505,"url":"https://github.com/emfcamp/numbermanagement","last_synced_at":"2026-01-18T14:26:33.666Z","repository":{"id":237302370,"uuid":"794243273","full_name":"emfcamp/numbermanagement","owner":"emfcamp","description":"EMF phone number management system","archived":false,"fork":false,"pushed_at":"2025-10-01T10:50:06.000Z","size":1298,"stargazers_count":4,"open_issues_count":10,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-10-01T11:24:21.982Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emfcamp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-30T18:24:28.000Z","updated_at":"2025-09-19T08:10:35.000Z","dependencies_parsed_at":"2024-05-29T22:44:23.269Z","dependency_job_id":"b21eb986-a477-43c8-836e-cfaaaec33a44","html_url":"https://github.com/emfcamp/numbermanagement","commit_stats":null,"previous_names":["emfcamp/numbermanagement"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/emfcamp/numbermanagement","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emfcamp%2Fnumbermanagement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emfcamp%2Fnumbermanagement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emfcamp%2Fnumbermanagement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emfcamp%2Fnumbermanagement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emfcamp","download_url":"https://codeload.github.com/emfcamp/numbermanagement/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emfcamp%2Fnumbermanagement/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28537569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-18T14:26:33.591Z","updated_at":"2026-01-18T14:26:33.659Z","avatar_url":"https://github.com/emfcamp.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Thats numberwang!\n\n## Overview\n\nThis is a new number management app for the EMF Phone Team at Events,\nThe goal of the app is to allow users to regsiter custom extensions and get appropriate credentials or configuration to use those with different Types of Service (DECT, SIP, Cellular, POTS etc)\n\nIt will then expose provisioning feeds to the telephone systems to create the relevent configuration based on the ToS.\n\nThe aim it to make the platform configurable to support multiple new ToS without requiring code changes, eg if someone wants to stand up a pager system and admin can then create a new ToS.\n\n## Role Based Access Control\n\nAdmin - Has elevated privileges to configure the system (this is using the django admin interface)\nOperator - Has privileges to assign permissions to users, modify user services and allocate privileged numbers\nUser - Regular user, can create and update their own extensions and service parameters \nGuest - Unregistered user, can view some public information such as directory.\n\n## Features\n## WebApp\n- As an Admin I want to be able to create types of service eg DECT, SIP, POTS, Cellular etc.\n- As an Admin I want to be able to assign parameter fields to a Type of service\n- As an Admin I want to be able to define available number ranges for users to register from\n- As an Admin I want to be able to define permission flags for extensions  (external, international etc)\n- As an Admin I want to be able to designate users as operators\n- As a User I want to be able to register an account\n- As a User I want to be able to register a number from the available ranges with a type of service\n- As a User I want to be able to choose if my number appears in the phonebook\n- As a User I want to be able to delete one of my numbers\n- As a Guest I want to be able to view the phonebook\n- As an Operator I want to be able to assign a number to any user including privileged ranges and ToS\n- As an Operator I want to be able to assign permissions to an extension\n- As an Operator I want to be able to delete an extension from a User\n- As an Operator I want to be able to ban a User\n- As an Operator I want to be able to bar a number\n- As a User I want to be able to be able to reset my password\n- As a user I want to be able to update my name, email or password (username is fixed)\n- As a user I want to verify my email when I signup\n\n### API \n- As an app I want to be able to fetch all config for a given ToS\n- As an Admin I want to be able to create API Keys\n- As an Admin I want to limit API keys scope by ToS\n\n\n## Running Locally\n\nThe application is built in django, for development purposes it uses a local sqlite3 database that is created by django\nThe only requirement currently is Python 3, Django 5.0 or later and the django-extensions package for clearing the database, other requirements may be added to the `requirements.txt` file as the project develops.\n\n- Clone this repository\n\n\t`git clone https://github.com/emfcamp/numbermanagement`\n\n- Enter directory\n\n\t`cd nms`\n\n- Install requirements \n\n\t`pip install -r requirements.txt`\n\n- Rename the example.env file, (you should be fine with dummy values in there if you're not sending provisioning messages to the phone system.)\n\n\t`mv example.env .env`\n\n- First time you will likely want to clean and setup the database, Either:\n\n\t- run `bash ./clean_setup_db.sh` (which does all of the below for you)\n\n\t- OR run the following commands \n\t\t\n\t\t```\n\t\tpython manage.py reset_db\n\t\tls -R */migrations/000*.py | xargs rm \n\t\tpython manage.py makemigrations\n\t\tpython manage.py migrate\n\t\t```\n\n\t\tThis will leave you with an empty database, if you want to populate the db with some sample data run\n\t\t\n\t\t`python manage.py loaddata fixture.json`\n\t\n\tThis adds 3 users to the platform, `user` `operator` % `admin` all with the password of `numberwang`\n\t\n\tYou will also have an active event called development, Groups, DECT, SNOM \u0026 POTS type of service and some sample numbers.\n\n\n- Start the dev server\n`python manage.py runserver`\n\n\tShould now be running on localhost:8000\n\n\tYou can access the admin interface on /admin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femfcamp%2Fnumbermanagement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femfcamp%2Fnumbermanagement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femfcamp%2Fnumbermanagement/lists"}