{"id":13424998,"url":"https://github.com/ljvmiranda921/sprites-as-a-service","last_synced_at":"2025-04-07T05:11:07.111Z","repository":{"id":40796371,"uuid":"254623785","full_name":"ljvmiranda921/sprites-as-a-service","owner":"ljvmiranda921","description":"Generate your personal 8-bit avatars using Cellular Automata, a mathematical model that simulates life, survival, and extinction","archived":false,"fork":false,"pushed_at":"2023-11-10T10:04:15.000Z","size":2173,"stargazers_count":311,"open_issues_count":15,"forks_count":19,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-30T21:12:09.973Z","etag":null,"topics":["avatar-generator","cellular-automata","fastapi","nuxtjs","pixel-art","python","sprites","vuejs"],"latest_commit_sha":null,"homepage":"https://ljvmiranda921.github.io/sprites-as-a-service","language":"Vue","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/ljvmiranda921.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-04-10T11:59:57.000Z","updated_at":"2025-03-26T14:32:30.000Z","dependencies_parsed_at":"2024-01-07T10:50:52.032Z","dependency_job_id":null,"html_url":"https://github.com/ljvmiranda921/sprites-as-a-service","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljvmiranda921%2Fsprites-as-a-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljvmiranda921%2Fsprites-as-a-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljvmiranda921%2Fsprites-as-a-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljvmiranda921%2Fsprites-as-a-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ljvmiranda921","download_url":"https://codeload.github.com/ljvmiranda921/sprites-as-a-service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595335,"owners_count":20963943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["avatar-generator","cellular-automata","fastapi","nuxtjs","pixel-art","python","sprites","vuejs"],"created_at":"2024-07-31T00:01:01.716Z","updated_at":"2025-04-07T05:11:07.050Z","avatar_url":"https://github.com/ljvmiranda921.png","language":"Vue","funding_links":[],"categories":["Projects"],"sub_categories":["Open Source Projects"],"readme":"![](frontend/static/header.png)\n\n[![Github Pages](https://github.com/ljvmiranda921/sprites-as-a-service/workflows/Github%20Pages/badge.svg)](https://github.com/ljvmiranda921/sprites-as-a-service/actions?query=workflow%3A%22Github+Pages%22)\n[![Cloud Run](https://github.com/ljvmiranda921/sprites-as-a-service/workflows/Cloud%20Run/badge.svg)](https://github.com/ljvmiranda921/sprites-as-a-service/actions?query=workflow%3A%22Cloud+Run%22)\n[![Frontend CI](https://github.com/ljvmiranda921/sprites-as-a-service/workflows/Frontend%20CI/badge.svg)](https://github.com/ljvmiranda921/sprites-as-a-service/actions?query=workflow%3A%22Frontend+CI%22)\n[![Backend CI](https://github.com/ljvmiranda921/sprites-as-a-service/workflows/Backend%20CI/badge.svg)](https://github.com/ljvmiranda921/sprites-as-a-service/actions?query=workflow%3A%22Backend+CI%22)\n\n**Try the interactive demo [here](https://ljvmiranda921.github.io/sprites-as-a-service) :sparkles::sparkles:**\n\n**I do not authorize the use of anything generated by this project for the selling of NFTs. 🙅‍❌**\n\n**Sprites-as-a-Service** is an open-source web application that allows you to\ngenerate custom 8-bit sprites using Cellular Automata, particularly Conway's\nGame of Life. Generate a unique sprite given a text, and control extinction and\nsurvival rates. In addition, you can also access the generator via a REST API.\n**Use it for your chat app or games!**\n\nThe frontend is made with Vue.js (with Nuxt.js) whereas the backend is done\nusing Python and FastAPI.\n\nYou can also read my creative process and motivation for building this app in [my blog](https://ljvmiranda921.github.io/projects/2020/03/31/cellular-sprites/)\n\n## Running the development server \n\nThe easiest way to run Sprites-as-a-service locally is via [docker\ncompose](https://docs.docker.com/compose/). First, clone this repository:\n\n```sh\ngit clone git@github.com:ljvmiranda921/sprites-as-a-service.git\n```\n\nthen build the images:\n\n```sh\ncd sprites-as-a-service\ndocker-compose build\n```\n\nThis will then build two images, `sprites-backend` and `sprites-frontend`, for\nthe backend and frontend services of the web app. You can then run them with\nthe command:\n\n```sh\ndocker-compose -d up\n```\n\nYou should be able to see the application running at\n[localhost:8080](localhost:8080). Close these services using:\n\n```sh\ndocker-compose down\n```\n\n## Production server and deployment\n\nThe frontend demo application is currently deployed in my website. I first\ngenerate a static website using Nuxt's `npm run generate`, then serve it on\nGithub pages. To see the frontend deployment procedure, I encourage you to\ncheck `.github/workflows/gh-pages.yml`.\n\nOn the other hand, the backend service is deployed in [Google Cloud\nRun](https://cloud.google.com/run/). I first build the image found in\n`./backend/Dockerfile` and deploy them to GCP. Check\n`.github/workflows/cloud-run.yml` for more information.\n\nI highly-encourage you to use the [Docker\nimages](https://github.com/ljvmiranda921/sprites-as-a-service/packages)\npublished in this repository. You might not need the frontend component itself,\nbut the backend can be deployed as a microservice. \n\n```sh\ndocker pull docker.pkg.github.com/ljvmiranda921/sprites-as-a-service/sprites-backend:latest\n```\n\n## Notable Implementations\n\n- [@danielgjackson](https://github.com/danielgjackson) has a pure-Javascript port for Sprites-as-a-Service. From that he made [Infinite Sprites!](https://danielgjackson.github.io/sprite/infinite.html) I encourage you to check it out and spend your hours looking at them!\n- [@yurkth](https://github.com/yurkth) created [Sprator](https://github.com/yurkth/sprator), a GUI application that generates sprites using cellular automaton. Here, you can set a seed, base \u0026 background colors, and size!\n\n## License\n\nThe content of this project itself is licensed under the [Creative Commons\nAttribution 4.0 license](https://creativecommons.org/licenses/by/4.0/deed.ast), and the underlying source code used to generate the\nsprites and build the website is licensed under the [MIT license](https://github.com/ljvmiranda921/sprites-as-a-service/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fljvmiranda921%2Fsprites-as-a-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fljvmiranda921%2Fsprites-as-a-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fljvmiranda921%2Fsprites-as-a-service/lists"}