This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Welcome to the Coonstagram repository! This is a Laravel-based social media clone inspired by the in-universe app from South Park: The Fractured but Whole, featuring a full feed system, profiles, moderation tools, and a dark, purple-accented UI.
This is a non-commercial fan/learning project. South Park, its characters, and all related trademarks belong to their respective owners. No original assets, images, or dialogue from the show are included — character names are used purely as an homage.
- Functionality: A social feed with posts, likes, comments (with replies), follows, profiles, admin moderation, and multi-language support
- Technology: Built with Laravel 12, Blade + Tailwind CSS, Alpine.js for interactivity, and a Nix flake for a reproducible dev environment
- Auth (register, login, password reset, email verification) via Laravel Breeze
- Feed with "For you" / "Following" filters, text and image posts
- Likes, comments, and threaded replies — all AJAX-driven, no page reloads
- Follow/unfollow, profile pages with follower/following lists in a modal
- Profile editing (avatar, bio, username, password, account deletion)
- Admin tools: post as any seeded character, user management (promote/demote admins, delete accounts)
- DE/EN language switcher covering UI text, validation, and auth messages
- Custom-styled error pages (403/404/419/429/500)
- PHP 8.4+: Ensure PHP is installed with required extensions (
pdo_mysql,mbstring,xml,curl,zip,bcmath,intl,fileinfo) - Composer: For PHP dependency management
- Node.js & NPM: For frontend asset compilation
- MySQL/MariaDB: For database management
A Nix flake is included if you prefer a reproducible dev shell (nix develop) instead of installing PHP/Node manually.
-
Clone this repository:
git clone git@github.com:newtox/coonstagram.git cd coonstagram -
Setup:
- Create a
.envfile based on the provided.env.example:cp .env.example .env
- Configure your database and mail settings in
.env
- Create a
-
Install Dependencies:
composer install npm install
-
Application Setup:
php artisan key:generate php artisan migrate --seed php artisan storage:link npm run build
- Laravel Framework: ^12.0
- Laravel Breeze: Auth scaffolding
- Resend PHP: Transactional email delivery
- Tailwind CSS: Utility-first styling
- Alpine.js: Lightweight interactivity (modals, AJAX likes/comments, dropdowns)
- Vite: Asset bundling
- Access the application at
http://127.0.0.1:8000 - Log in with a seeded character account (e.g.
kyle_broflovski@southpark.test/password) or the admin account (you@southpark.test/password)
On every push to main, the GitHub Action in .github/workflows/docker.yml builds a Docker image and publishes it as ghcr.io/newtox/coonstagram.
The server runs the image from docker-compose.yml as a Portainer stack:
- Configuration comes from the stack's environment variables (Portainer provides them as
stack.env). - Uploaded avatars and post images live in
/docker_volumes/coonstagram/public, mounted tostorage/app/public. - The app listens on
127.0.0.1:8092behind Caddy (reverse_proxy 127.0.0.1:8092). - Migrations run automatically when the container starts.
To update: push to main, wait for the action to finish, then use Pull and redeploy on the stack in Portainer.
Want to improve Coonstagram? Here's how:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add: your feature' - Push to your branch:
git push origin feature/your-feature - Submit a pull request
This project's code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) License.
- License: CC BY-NC-SA 4.0
By contributing, you agree that your contributions will be licensed under the same license. This license covers the code in this repository only — it does not grant any rights to South Park-related names, characters, or trademarks.
Have questions or found a bug?
- Open an issue on GitHub
- Or reach out to me at justin.lys26@gmail.com
