Generate your personal 8-bit avatars using Cellular Automata, a mathematical model that simulates life, survival, and extinction

Overview

Github Pages Cloud Run Frontend CI Backend CI

Try the interactive demo here

Sprites-as-a-Service is an open-source web application that allows you to generate custom 8-bit sprites using Cellular Automata, particularly Conway's Game of Life. Generate a unique sprite given a text, and control extinction and survival rates. In addition, you can also access the generator via a REST API. Use it for your chat app or games!

The frontend is made with Vue.js (with Nuxt.js) whereas the backend is done using Python and FastAPI.

You can also read my creative process and motivation for building this app in my blog

Running the development server

The easiest way to run Sprites-as-a-service locally is via docker compose. First, clone this repository:

git clone [email protected]:ljvmiranda921/sprites-as-a-service.git

then build the images:

cd sprites-as-a-service
docker-compose build

This will then build two images, sprites-backend and sprites-frontend, for the backend and frontend services of the web app. You can then run them with the command:

docker-compose -d up

You should be able to see the application running at localhost:8080. Close these services using:

docker-compose down

Production server and deployment

The frontend demo application is currently deployed in my website. I first generate a static website using Nuxt's npm run generate, then serve it on Github pages. To see the frontend deployment procedure, I encourage you to check .github/workflows/gh-pages.yml.

On the other hand, the backend service is deployed in Google Cloud Run. I first build the image found in ./backend/Dockerfile and deploy them to GCP. Check .github/workflows/cloud-run.yml for more information.

I highly-encourage you to use the Docker images published in this repository. You might not need the frontend component itself, but the backend can be deployed as a microservice.

docker pull docker.pkg.github.com/ljvmiranda921/sprites-as-a-service/sprites-backend:latest

Notable Implementations

  • @danielgjackson has a pure-Javascript port for Sprites-as-a-Service. From that he made Infinite Sprites! I encourage you to check it out and spend your hours looking at them!
  • @yurkth created Sprator, a GUI application that generates sprites using cellular automaton. Here, you can set a seed, base & background colors, and size!

License

The content of this project itself is licensed under the Creative Commons Attribution 4.0 license, and the underlying source code used to generate the sprites and build the website is licensed under the MIT license.

Owner
Lj Miranda
I build things—and occasionally write about stuff
Lj Miranda
Python flexible slugify function

Python flexible slugify function

Dmitry Voronin 471 Dec 20, 2022
Cirq is a Python library for writing, manipulating, and optimizing quantum circuits and running them against quantum computers and simulators

Cirq is a Python library for writing, manipulating, and optimizing quantum circuits and running them against quantum computers and simulators. Install

quantumlib 3.6k Jan 07, 2023
Python tools for experimenting with differentiable intonation cost measures

Differentiable Intonation Tools The Differentiable Intonation Tools (dit) are a collection of Python functions to analyze the intonation in multitrack

Simon Schwär 2 Mar 27, 2022
Fully cross-platform toolkit (and library!) for MachO+Obj-C editing/analysis

fully cross-platform toolkit (and library!) for MachO+Obj-C editing/analysis. Includes a cli kit, a curses GUI, ObjC header dumping, and much more.

cynder 301 Dec 28, 2022
Advanced Developing of Python Apps Final Exercise

Advanced-Developing-of-Python-Apps-Final-Exercise This is an exercise that I did for a python advanced learning course. The exercise is divided into t

Alejandro Méndez Fernández 1 Dec 04, 2021
Powering up Apache JMeter with Streamlit and opening the door for machine learning.

Powering up Apache JMeter with Streamlit Overview Apache JMeter is an open source load testing tool written in 100% pure Java. JMeter supports umpteen

NaveenKumar Namachivayam ⚡ 16 Aug 24, 2022
Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal resources please report to us and we will remove.

Participants of Bertelsmann Technology Scholarship created an awesome list of resources and they want to share it with the world, if you find illegal

Wissem Marzouki 29 Nov 28, 2022
Coinloggr - A learning resource and social platform for the coin collecting community

Coinloggr A learning resource and social platform for the coin collecting commun

John Galiszewski 1 Jan 10, 2022
A module to develop and apply old-style links

Old-Linkage-Dev (OLD) Old Linkage Development is a module to develop and apply old-style links. Old-style links stand for some traditional or conventi

Tarcadia 2 Dec 04, 2021
A python program, imitating functionalities of a banking system

A python program, imitating functionalities of a banking system, in order for users to perform certain operations in a bank.

Moyosore Weke 1 Nov 26, 2021
FCurve-Cleaner: Tries to clean your dense mocap graphs like an animator would

Tries to clean your dense mocap graphs like an animator would! So it will produce a usable artist friendly result while maintaining the original graph.

wiSHFul97 5 Aug 17, 2022
Pygments is a generic syntax highlighter written in Python

Welcome to Pygments This is the source of Pygments. It is a generic syntax highlighter written in Python that supports over 500 languages and text for

1.2k Jan 06, 2023
LOC-FLOW is an “hands-free” earthquake location workflow to process continuous seismic records

LOC-FLOW is an “hands-free” earthquake location workflow to process continuous seismic records: from raw waveforms to well located earthquakes with magnitude calculations. The package assembles sever

Miao Zhang 71 Jan 09, 2023
Stack-overflow-import - Import arbitrary code from Stack Overflow as Python modules.

StackOverflow Importer Do you ever feel like all you’re doing is copy/pasting from Stack Overflow? Let’s take it one step further. from stackoverflow

Filip Haglund 3.7k Jan 08, 2023
A very basic ciphering/deciphering tool

ckrett-python-library This is an useful python library for people who care about privacy, this library is useful to cipher and decipher text using 4 s

SasiVatsal 8 Oct 18, 2022
A basic layout of atm working of my local database

Software for working Banking service 😄 This project was developed for Banking service. mysql server is required To have mysql server on your system u

satya 1 Oct 21, 2021
A Python 3 client for the beanstalkd work queue

Greenstalk Greenstalk is a small and unopinionated Python client library for communicating with the beanstalkd work queue. The API provided mostly map

Justin Mayhew 67 Dec 08, 2022
Multiple GNOME terminals in one window

Terminator by Chris Jones [email protected] and others. Description Terminator was

GNOME Terminator 1.5k Jan 01, 2023
An OrpheusDL Tidal module

OrpheusDL - Tidal A Tidal module for the OrpheusDL modular archival music program Report Bug · Request Feature Table of content About OrpheusDL - Tida

Daniel 54 Dec 29, 2022
☘️ Projet Voltaire Solver in Python3

☘️ Projet Voltaire Solver in Python3

Bidouffe 8 Dec 02, 2022