Quacky is an all-in-one social media edutainment platform for teens. It is part of a broader development I'm programming over the next couple of months to actually pitch.
i dont really feel like yapping on this readme, but essentially:
- Quacky is a social media platform designed for schools to educate teens about responsible social media usage.
- Built like an realistic social media platform, with real users, all the features you would expect, and simplicity.
- Essentially, the experience is like Banqur High, where users unlock modules as they are educated with content generated by the app.
- Complete quizes to unlock more content, like posting, commenting, profiles, etc..
- Collect in game currency to unlock rewards that staff can decide (i.e. spotify premium yay)
- Staff can upload lessons, quizes, resources to the site as they wish to customise the experience.
so thats the gist of it, if you want to see the entire dev journey, check out the devlogs at https://quacky.space/devlog
- Next.js 16
- Prisma
shadcn/ui- Better Auth
- Resend
- tRPC
t3-env- Seq (logging platform)
- Postgresql (db)
- OpenAI adapter (cloud model access)
- Flagsmith (Fast flag features for Quacky)
Infrastructure wise, I'm hosting Quacky on 3 raspberry pi 5's, each with:
- 4gb ram
- 128gb sd card
They are clustered together using Kubenetes via. a portainer instance, served using Cloudflare Tunnels out of my network.
Try quacky at https://quacky.space!
its extremely simple. you will need:
- a linux server with Docker running Postgresql
- node.js
get started by:
# cloning the repo
git clone https://github.com/linuskang/quacky
# install dependencies
cd quacky
npm install
# env
cp .env.example .env
# apply migrations
npx prisma generate
npx prisma migrate dev
# start development server
npm run dev
# access at http://0.0.0.0:3000I currently don't have any documentation for the site layouts and design philosophy, however, there is a Scalar API references at:
https://quacky.space/docs, which contains documentation for all APIs.
please see the contribution guide for more information.
services:
app:
image: ghcr.io/linuskang/quacky:latest
restart: unless-stopped
env_file: .env
ports:
- "3000:3000"ensure that you've configured your .env file, and run the migrations using npx prisma migrate deploy.
after, just run compose up when your finished:
docker compose up -dAccess the app at http://0.0.0.0:3000
If you want users to be able to recieve in-app notifications from the system, like moderation alerts, shop updates, etc.. you will need to create a system account. By default, all system notifications use the quacky userId, so you will need to create an user account with the following information:
userid: quacky
name: Quacky
username: quacky
verified: true
email: quacky@localhost
Once your done, notifications will automatically start sending to your users.
weirdo... but ok. you'll need to figure out how to get postgres and rustfs running yourself 😭
-
clone the repo and double check your env is all set.
-
deploy the app using
npm run start -
grab a fire extinguisher
i wish you luck 😎
this project, including all code, and assets, are governed under the CC BY-NC 4.0 license. see the license for more details.
- Project coded by Linus Kang.
- Goose Mascots by Queensland Academies for Creative Industries, used with permission. All rights to their respective owners.
- Logo Artwork & Various goose remixes by My Sister.
- Edelson, L., Haugen, F., & McCoy, D. (2025). A Comparative Survey Of Algorithmic Feed Recommendation System Designs. ACM Transactions on Recommender Systems. https://doi.org/10.1145/3757327
See ai.md.
