zoonk/archived-zoonk
Fork: 78 Star: 1317 (更新于 2024-10-24 07:32:04)
license: AGPL-3.0
Language: Elixir .
Platform for creating interactive courses.
最后发布版本: v0.4.2-beta ( 2024-04-11 02:26:13)
[!CAUTION] This project is no longer maintained.
We're working on an improved learning platform that will have a different focus than this one. Therefore, we've decided it would be better to do it on a separate repository. This will allow anyone using this project to continue using it or even fork it and implement new features.
We'll change this repository's name to
archived-zoonk
, so we can use thezoonk
name to the new project. Follow our org on GitHub for updates when this new project launches. We're not comitting to any deadline, though. The new project will launch once we feel confident we're releasing something that definitely improves how we learn things. This may take a while but we think it's going to be worth the wait.Unfortunately, we're not looking for contributors at this time we want to get a few things right before we open up for contributions. Once we feel confident we're on the right track and we have something nice to show, we'll open-source it at https://github.com/zoonk/zoonk
Sorry for any inconvenience.
Open-source alternative to create interactive courses like Duolingo.
Learn more »
Roadmap
·
Community
Table of Contents
About this project
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.
Tech stack
- Backend: Phoenix
- Frontend: Phoenix LiveView
- Database: Postgres - Neon
- CSS: Tailwind CSS
- Email: Resend
- Storage: Tigris
- Hosting: Fly
Getting started
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.
Requirements
-
Elixir 1.17+ and Erlang 26+. Run
elixir -v
to find your current version for Elixir and Erlang. -
Hex:
mix local.hex
. -
Phoenix:
mix archive.install hex phx_new
. - PostgreSQL 15+: PostgreSQL.
- (Linux users only): inotify-tools.
Local development
- Run
mix setup
to install dependencies and set up the database and assets. - Run
mix seed
to fetch initial data to the database (See options). - Run
mix phx.server
to start a development server. - Run
mix test
to run tests ormix test.watch
to run tests and watch for changes. - Run
mix ci
to run code quality checks. - Run
mix locale
to update translation files.
SSL on localhost
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:
- Create a
cert
directory underpriv
:mkdir priv/cert
. - Generate a new certificate:
mkcert -key-file priv/cert/selfsigned_key.pem -cert-file priv/cert/selfsigned.pem localhost zoonk.test "*.zoonk.test" apple.test
. - Run
mkcert -install
to install the certificate in the system trust store. - You may also need to enable
Allow invalid certificates for resources loaded from localhost
on Google Chrome flags. - Restart your local server:
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:
- https://zoonk.test:4001
-
https://apple.zoonk.test:4001 (each school slug can be used as a subdomain of
zoonk.test
). - Or any other domain you added before.
Mailer
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.
Storage
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
).
Translations
Follow the steps below to add a new language to Zoonk:
- Copy the
priv/gettext/en
directory topriv/gettext/<language_code>
. - Translate the
*.po
files. - Add the language code to the
locales
list in config/config.exs. - Add the language name to
@supported_locales
in lib/translate/translate_plug.ex.
Sponsors
- Gustavo A. Castillo
- @adriy-be
- Add your name or brand here by sponsoring our project.
最近版本更新:(数据更新于 2024-10-14 15:35:17)
2024-04-11 02:26:13 v0.4.2-beta
2024-02-09 21:09:25 v0.4.1-beta
2023-12-28 13:58:54 v0.4.0-beta
2023-11-21 20:08:10 v0.3.3-beta
2023-11-21 19:09:32 v0.3.2-beta
2023-11-12 17:49:27 v0.3.1-beta
2023-11-07 01:33:48 v0.3.0-beta
2023-10-26 03:10:39 v0.2.5-alpha
2023-10-25 12:17:59 v0.2.4-alpha
2023-10-24 21:05:39 v0.2.3-alpha
主题(topics):
education, elixir, flyio, phoenix, phoenix-liveview, postgres, resend-email, tailwindcss
zoonk/archived-zoonk同语言 Elixir最近更新仓库
2024-10-30 02:19:37 teslamate-org/teslamate
2024-09-07 03:11:29 firezone/firezone
2024-07-07 05:20:46 elixir-lang/elixir
2020-06-26 19:06:09 phoenixframework/phoenix
2020-06-04 03:23:12 phoenixframework/phoenix_live_dashboard
2020-05-21 18:42:23 bnb-chain/bsc-explorer