y is a privacy-first, text-only social platform designed as a minimalist mockery of X (formerly Twitter). Built with the Phoenix framework and Elixir, it strips away corporate surveillance, media distractions, and identity requirements to focus purely on raw, uninhibited expression.
The core philosophy of y is that privacy is not a feature, but the underlying architecture. The platform ensures that what is said remains more important than who says it.
- Zero Identity Storage: No emails, phone numbers, or real names are collected. Registration requires only a username and password.
- Text-Only "Takes": Posts are limited to 250 characters. There is no support for images, videos, or link previews to maintain a clean, distraction-free feed.
- "Agrees" instead of Likes: A simple, binary agreement system. It removes the performative "like" count and replaces it with a more direct signal of alignment.
- Anonymous Identity: Users are assigned random Bitmoji avatars. Identity is protected by design; there are no "real name" fields.
- "Retakes": Users can "retake" a post, adding their own commentary. This creates a threaded conversation structure that encourages debate and discussion.
- Seed Phrase Recovery: Account recovery is handled via a 12-word BIP39-style seed phrase, ensuring users remain in control of their accounts without PII (Personally Identifiable Information).
- Bespoke Aesthetic: A dedicated dark-mode-only interface using a deep navy/black palette (#0D0D1A) for a focused user experience.
-
Language: Elixir
-
Framework: Phoenix (LiveView for real-time updates)
-
Database: PostgreSQL
-
Cache/Real-time: Redis (used for sessions, rate limiting, and trending hashtags)
Before starting, ensure you have the following installed locally:
- Elixir & Erlang
- PostgreSQL (Running on the default port)
- Redis (Running on the default port)
- Database Configuration
Create a PostgreSQL database named y_dev. Ensure your local Postgres user has the following credentials:
- Username: user
- Password: password123
- Fetch Dependencies
Run the following command in the root directory to install the required Phoenix and Elixir packages:
mix deps.get- Database Setup
Run the setup command to initialise your database schema and run migrations:
mix ecto.setup- Seed the Database
Populate the database with the initial required data (including the Bitmoji pool and default system settings):
mix y.seed- Start the Server
Launch the Phoenix server locally:
mix phx.serverOnce the server has started, you can access the application by navigating to http://localhost:4000 in your web browser.
-
Security: Passwords and seed phrases are hashed using Argon2id.
-
Real-time Features: Leveraging Phoenix PubSub for instant notification delivery and feed updates.
-
Performance: Redis is utilised for pre-computing feed chunks and managing the trending hashtag sorted sets.