Toucan is a modern, full-stack social media application built with React, TypeScript, and Elixir Phoenix. Designed for real-time, highly interactive communication, Toucan enables users to create and engage with posts, hold private one-on-one chats, and personalize their social experience within a seamless and scalable platform.
What sets Toucan apart is its intentional shift away from the aggressive engagement algorithms found in mainstream platforms. Instead of optimizing for virality and endless reach, Toucan focuses on genuine, meaningful interactions within your personal network. It prioritizes closeness over clout, helping users stay connected to their circle without the pressure to go viral or chase metrics.
Toucan empowers users to:
-
Share and interact with content in real-time
-
Communicate privately through direct chat channels
-
Experience a non-invasive, privacy-respecting feed
-
Build and explore social circles in a low-noise, user-first environment
By design, Toucan fosters healthier online communities by opting out of hyper-targeted feeds and shifting the focus toward quality over quantity in social interaction. It’s not about being seen by everyone — it’s about being seen by the right people.
- React with TypeScript
- Tailwind CSS (customizable themes)
- Redux Toolkit for state management
- Vite (based on your setup)
- Elixir Phoenix (API + Channels)
- Ecto for data layer
- Guardian for JWT authentication
- Waffle for media uploads (local + S3)
- Oban for background jobs
- PostgreSQL database
- Sign up, login, and JWT-based token management
- Auto-generated usernames for user convenience
- OAuth integration (Google, GitHub)
- Email Verification (upcoming)
- Create, edit, and delete posts with media attachments
- Like, comment, and repost functionality
- Personalized feed sorted by:
- Engagement (likes, comments, reposts)
- Recency
- Friend/follower relationship
- One-to-one private chat built from scratch using Phoenix Channels
- Real-time message delivery
- Typing indicators (in progress)
- Real-time in-app notifications when users are liked, followed, or mentioned
- Phoenix PubSub-based channel broadcasting for notification delivery
- Notifications creation via background jobs
- Email Notifications (upcoming)
- Group post sharing
- Real-time group chat channels
- Light and dark mode toggle
- Stored per user preference
- Upload and associate images with posts and profiles using Waffle
- Support for local uploads in development, S3 in production (upcoming)
- Report harmful content
- Block users posting harmful content
- User and post search functionality using Postgres full-text search
- Backend tested with ExUnit
# Install dependencies
mix deps.get
# Setup the database
mix ecto.setup
# Start the server
mix phx.server
# Install dependencies
npm install
# Start the development server
npm run dev
- Integration with Prometheus and Grafana for system metrics
- Real-time event logging with Kafka + Phoenix Microservices architecture
-
Email: solobarine@gmail.com
-
LinkedIn: Solomon Akpuru
-
Website: Portfolio Website
If you find Toucan inspiring or useful, feel free to star the repository to support its development!
Click here to view Toucan's License