{"id":45911531,"url":"https://github.com/firu11/nothing-glyphtones","last_synced_at":"2026-04-29T23:10:53.632Z","repository":{"id":266982829,"uuid":"899768751","full_name":"firu11/nothing-glyphtones","owner":"firu11","description":"Glyphtones - a simple audio-sharing platform for Nothing Phone users","archived":false,"fork":false,"pushed_at":"2026-03-08T10:05:31.000Z","size":1285,"stargazers_count":32,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-08T14:15:37.728Z","etag":null,"topics":["glyphs","glyphtones","lights","nothing","nothing-phone","ringtones"],"latest_commit_sha":null,"homepage":"https://glyphtones.firu.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/firu11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"firu11","buy_me_a_coffee":"firu"}},"created_at":"2024-12-07T01:17:24.000Z","updated_at":"2026-03-08T10:05:34.000Z","dependencies_parsed_at":"2024-12-07T13:33:34.833Z","dependency_job_id":"17c57932-e492-4a21-8e41-c1602eba03c1","html_url":"https://github.com/firu11/nothing-glyphtones","commit_stats":null,"previous_names":["firu115/nothing_gliphtones","firu115/nothing_glyphtones","firu11/nothing-glyphtones"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/firu11/nothing-glyphtones","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firu11%2Fnothing-glyphtones","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firu11%2Fnothing-glyphtones/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firu11%2Fnothing-glyphtones/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firu11%2Fnothing-glyphtones/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firu11","download_url":"https://codeload.github.com/firu11/nothing-glyphtones/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firu11%2Fnothing-glyphtones/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32331305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["glyphs","glyphtones","lights","nothing","nothing-phone","ringtones"],"created_at":"2026-02-28T07:00:27.283Z","updated_at":"2026-04-27T10:00:52.535Z","avatar_url":"https://github.com/firu11.png","language":"Go","funding_links":["https://github.com/sponsors/firu11","https://buymeacoffee.com/firu"],"categories":["others"],"sub_categories":[],"readme":"# Glyphtones\n[Nothing](https://nothing.tech/) is making phones with programmable LED lights on the back.\nThey call it \"Glyph Interface\" and there is a bunch of ringtones preinstalled. Nothing also made an app called Glyph Composer,\nwhich allows users to create new ringtones, but the options are quite limited. Users have figured out a way to create custom\nringtones and started making popular songs with matching lights.\n\nGlyphtones is a platform, where people can either share their custom compositions, or find those they like.\n\n![Screenshots](https://cdn.nothing.community/2025-01-04/1735987786-859251-render.png)\n\n## Tech stack\nThe app uses [Go](https://go.dev/) + [echo](https://echo.labstack.com/) + [templ](https://github.com/a-h/templ) to render HTML pages for the client (and a little bit of [htmx](https://htmx.org/)).\nData is stored in a [PostgreSQL](https://www.postgresql.org/) database.\n\n## Production\nThe website is running in Germany, Falkenstein on [Hetzner](https://www.hetzner.com/cloud/) VPS.\n\n## Database Schema\n![ER Diagram](database/diagram.svg)\n\n---\n\n## How to run (for developers)\n### With Docker/Podman\n1. Clone the repository\n```sh\ngit clone https://github.com/firu11/nothing-glyphtones.git\n```\n2. Setup a [PostgreSQL](https://www.postgresql.org/download/) database\n```sh\nbrew install postgresql@17\nbrew services start postgresql  # start postgresql\npsql postgres                   # open postgresql\n# --- inside postgres ---\npostgres=# CREATE ROLE chris WITH LOGIN PASSWORD 'password';  # create user with password\npostgres=# CREATE DATABASE glyphtones OWNER chris;            # create a database called \"glyphtones\" with \"chris\" being the owner\npostgres=# \\q  # exit\n```\n3. Build the image\n```sh\ndocker build -t glyphtones .\n```\n4. Run the container\n```sh\ndocker run --rm \\\n  -p 8080:8080 \\\n  -e DB_CONNECTION_STRING=\"postgresql://chris:password@localhost:5432/glyphtones?sslmode=disable\" \\\n  -e GOOGLE_SECRET=\"\u003cGOOGLE_CONSOLE_SECRET\u003e\" \\\n  -e GOOGLE_ID=\"\u003cGOOGLE_CONSOLE_ID\u003e \\\n  -e GOOGLE_REDIRECT_URL=\"http://localhost:8080/google-callback\" \\\n  glyphtones\n```\n\n### Bare-metal\n\n1. Install [Go](https://go.dev/doc/install) compiler and [PostgreSQL](https://www.postgresql.org/download/) server\n2. Install [Templ](https://templ.guide/quick-start/installation) via `go install`\n3. Create a new database in psql\n4. Clone this repository\n5. Run the _init.sql_ file to setup the database\n6. Configure your enviroment variables\n7. Run the project (`templ generate \u0026\u0026 go run .`)\n\n#### MacOS example:\n```sh\n# INSTALLATION\nbrew install go                                   # go\nbrew install postgresql@17                        # postgresql\ngo install github.com/a-h/templ/cmd/templ@latest  # templ\n\n# SETUP\nbrew services start postgresql  # start postgresql\npsql postgres                   # open postgresql\n# --- inside postgres ---\npostgres=# CREATE ROLE chris WITH LOGIN PASSWORD 'password';  # create user with password\npostgres=# CREATE DATABASE glyphtones OWNER chris;            # create a database called \"glyphtones\" with chris being the owner\npostgres=# \\q  # exit\n# --- back in terminal ---\ngit clone https://github.com/firu11/nothing-glyphtones.git  # clone the repository\n\n# CONFIGURATION\ncd nothing-glyphtones       # go into the project\npsql glyphtones \u003c init.sql  # load the init.sql file into the database\n# edit the configuration:\n#   when following this tutorial, only 3 variables need to be changed\n#   DB_NAME=glyphtones\n#   DB_USER=chris\n#   DB_NAME=password\n# save the file\n\n# RUN\nexport DB_CONNECTION_STRING=\"postgresql://chris:password@localhost:5432/glyphtones?sslmode=disable\"\nexport GOOGLE_SECRET=\"\u003cGOOGLE_CONSOLE_SECRET\u003e\"\nexport GOOGLE_ID=\"\u003cGOOGLE_CONSOLE_ID\u003e\"\nexport GOOGLE_REDIRECT_URL=\"http://localhost:8080/google-callback\"\n\ntempl generate  # generate html templates\ngo run .        # run the code\n# go to: http://localhost:1323 and voilà\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiru11%2Fnothing-glyphtones","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffiru11%2Fnothing-glyphtones","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiru11%2Fnothing-glyphtones/lists"}