Platform for creating interactive courses.
See the code[!CAUTION]
Project No Longer Maintained
Uneebee is no longer being maintained. I’m building a new platform, Zoonk, with a different focus. Instead of continuing Uneebee, I’m restructuring everything from the ground up to create a better way to learn through interactive courses.
The new project will initially use LLMs for learning and later expand to allow course creation, similar to Uneebee but with a more refined approach.
If you liked Uneebee, feel free to fork it. To follow the progress of Zoonk, check out the new repo.
Open-source alternative to create interactive courses like Duolingo.
Learn more »
Roadmap
·
Community
Interactive learning is more effective than traditional methods. Learners remember 10% of what they hear, 20% of what they read but 80% of what they see and do. That's why 34 hours of Duolingo are equivalent to a full university semester of language education.
We love Duolingo. We think those kinds of interactive experiences should be used in more fields. That's why we're building Zoonk, an open-source platform to create interactive courses like Duolingo.
Follow the instructions below to get Zoonk up and running on your local machine. We have a Dockerfile for deploying our demo app to Fly. For using Docker locally, see this.
elixir -v to find your current version for Elixir and Erlang.mix local.hex.mix archive.install hex phx_new.mix setup to install dependencies and set up the database and assets.mix seed to fetch initial data to the database (See options).mix phx.server to start a development server.mix test to run tests or mix test.watch to run tests and watch for changes.mix ci to run code quality checks.mix locale to update translation files.Prefer to do local development using SSL to resemble production as much as possible. You can use mkcert to generate a certificate. After you install mkcert, follow the steps below:
cert directory under priv: mkdir priv/cert.mkcert -key-file priv/cert/selfsigned_key.pem -cert-file priv/cert/selfsigned.pem localhost zoonk.test "*.zoonk.test" apple.test.mkcert -install to install the certificate in the system trust store.Allow invalid certificates for resources loaded from localhost on Google Chrome flags.mix phx.server. You may also need to restart your browser.You also need to make sure your machine maps localhost to a test domain (we're using zoonk.test for this guide). dnsmasq allows you to resolve domains to your local machine without having to change your /etc/hosts file. To install dnsmasq:
brew install dnsmasq
# Create a configuration directory
mkdir -pv $(brew --prefix)/etc/
# Set up your domains
echo 'address=/zoonk.test/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'address=/.zoonk.test/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'address=/apple.test/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
# Add dnsmasq to your resolver
sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/zoonk.test'
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/apple.test'
# Start dnsmasq
sudo brew services start dnsmasq
That's it! You can now start your local server (mix phx.server) and test your domains using:
zoonk.test).We're using Resend to send emails. To make it work in production, you need to set the following environment variables on your server:
RESEND_API_KEY: Your Resend API key.You need to use an S3-compatible storage service to store your files. At Zoonk, we're using Tigris. You need to add the following environment variables:
AWS_ACCESS_KEY_ID: Your AWS access key ID.AWS_SECRET_ACCESS_KEY: Your AWS secret access key.AWS_REGION: Your AWS region.BUCKET_NAME: Your AWS bucket name.AWS_ENDPOINT_URL_S3: Your AWS endpoint URL.AWS_CDN_URL: Your AWS CDN URL (optional. If missing, we'll use the S3 endpoint URL).CSP_CONNECT_SRC: Your S3 domain (i.e. https://fly.storage.tigris.dev).Follow the steps below to add a new language to Zoonk:
priv/gettext/en directory to priv/gettext/<language_code>.*.po files.locales list in config/config.exs.@supported_locales in lib/translate/translate_plug.ex.1,259 followers · starred Nov 2023
261 followers · starred Jul 2024
177 followers · starred Nov 2023
63 followers · starred Jul 2024
Platform for creating interactive courses.
See the code[!CAUTION]
Project No Longer Maintained
Uneebee is no longer being maintained. I’m building a new platform, Zoonk, with a different focus. Instead of continuing Uneebee, I’m restructuring everything from the ground up to create a better way to learn through interactive courses.
The new project will initially use LLMs for learning and later expand to allow course creation, similar to Uneebee but with a more refined approach.
If you liked Uneebee, feel free to fork it. To follow the progress of Zoonk, check out the new repo.
Open-source alternative to create interactive courses like Duolingo.
Learn more »
Roadmap
·
Community
Interactive learning is more effective than traditional methods. Learners remember 10% of what they hear, 20% of what they read but 80% of what they see and do. That's why 34 hours of Duolingo are equivalent to a full university semester of language education.
We love Duolingo. We think those kinds of interactive experiences should be used in more fields. That's why we're building Zoonk, an open-source platform to create interactive courses like Duolingo.
Follow the instructions below to get Zoonk up and running on your local machine. We have a Dockerfile for deploying our demo app to Fly. For using Docker locally, see this.
elixir -v to find your current version for Elixir and Erlang.mix local.hex.mix archive.install hex phx_new.mix setup to install dependencies and set up the database and assets.mix seed to fetch initial data to the database (See options).mix phx.server to start a development server.mix test to run tests or mix test.watch to run tests and watch for changes.mix ci to run code quality checks.mix locale to update translation files.Prefer to do local development using SSL to resemble production as much as possible. You can use mkcert to generate a certificate. After you install mkcert, follow the steps below:
cert directory under priv: mkdir priv/cert.mkcert -key-file priv/cert/selfsigned_key.pem -cert-file priv/cert/selfsigned.pem localhost zoonk.test "*.zoonk.test" apple.test.mkcert -install to install the certificate in the system trust store.Allow invalid certificates for resources loaded from localhost on Google Chrome flags.mix phx.server. You may also need to restart your browser.You also need to make sure your machine maps localhost to a test domain (we're using zoonk.test for this guide). dnsmasq allows you to resolve domains to your local machine without having to change your /etc/hosts file. To install dnsmasq:
brew install dnsmasq
# Create a configuration directory
mkdir -pv $(brew --prefix)/etc/
# Set up your domains
echo 'address=/zoonk.test/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'address=/.zoonk.test/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'address=/apple.test/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
# Add dnsmasq to your resolver
sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/zoonk.test'
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/apple.test'
# Start dnsmasq
sudo brew services start dnsmasq
That's it! You can now start your local server (mix phx.server) and test your domains using:
zoonk.test).We're using Resend to send emails. To make it work in production, you need to set the following environment variables on your server:
RESEND_API_KEY: Your Resend API key.You need to use an S3-compatible storage service to store your files. At Zoonk, we're using Tigris. You need to add the following environment variables:
AWS_ACCESS_KEY_ID: Your AWS access key ID.AWS_SECRET_ACCESS_KEY: Your AWS secret access key.AWS_REGION: Your AWS region.BUCKET_NAME: Your AWS bucket name.AWS_ENDPOINT_URL_S3: Your AWS endpoint URL.AWS_CDN_URL: Your AWS CDN URL (optional. If missing, we'll use the S3 endpoint URL).CSP_CONNECT_SRC: Your S3 domain (i.e. https://fly.storage.tigris.dev).Follow the steps below to add a new language to Zoonk:
priv/gettext/en directory to priv/gettext/<language_code>.*.po files.locales list in config/config.exs.@supported_locales in lib/translate/translate_plug.ex.1,259 followers · starred Nov 2023
261 followers · starred Jul 2024
177 followers · starred Nov 2023
63 followers · starred Jul 2024