Yakker

A Twitter-style social media platform that respects the user's anonymity.

GitHub Link

Yakker on multiple devices

Overview

In this solo project, I designed and built Yakker, a minimalist, anonymous microblogging platform focused on creating a low-pressure social space. Through exploring the challenges of authentication, API development, and front-end state management, I crafted a clean, distraction-free feed where users can share short posts and follow others without the pressure of personal branding or identity. The project emphasized simplicity and content-driven interaction, removing common social media barriers like email verification and profile requirements.

My Role

UX Designer, Full Stack Developer

Tools

React, Django REST, HTML, CSS, JavaScript, Python, Axios, Whimsical

Timeline

4 Weeks

Process

User Stories, Wireframes, Style Guide, Development, Reflections

Yakker on desktop prototype

The Problem

In an increasingly loud and identity-driven digital world, many users crave a space to share thoughts without the pressure of building their personal branding. While major platforms like Twitter offer real-time interaction, they often come with complex algorithms, content visibility issues, and identity-driven engagement. I wanted to explore what it would look like to build a stripped-back, community-focused social media platform, one where users could post freely, follow others, and engage without the social pressure of being "seen." Yakker was born out of a personal challenge: could I design and build a working social platform from scratch, with a focus on anonymity and simplicity?

Problem 1: Social Pressure from Online Identity

Most social platforms tie expression to personal identity, which can limit authenticity and create performance anxiety.

Problem 2: Algorithm-Driven Engagement

Users struggle to have their content seen due to complex algorithms prioritizing popularity over genuine conversation.

Problem 3: Cluttered, High-Stimulation Interfaces

Modern social apps bombard users with notifications, ads, and visuals, distracting from the content itself.

The Solution

Yakker is a Twitter-style microblogging platform built using React on the front end and Django REST Framework on the back end. It allows users to sign up, follow others, and share short posts in a clean, anonymous feed. The design is intentionally minimal to prioritize content over identity. There are no email verifications or required personal details. Just text-based interactions that emphasize conversation. Building Yakker helped me dive deep into authentication, API development, and front-end state management, while also exploring the UX implications of designing for low-pressure social interaction.

Solution 1: Built for Anonymity and Simplicity

Yakker removes common identity-based barriers like email verification or profile creation, allowing users to engage without pressure.

Solution 2: Minimal UI, Maximum Focus

A clean, distraction-free interface keeps the focus on the content.

Solution 3: Full-Stack Functionality

Built with React and Django REST Framework, Yakker supports secure sign-up, following users, and posting, all powered by a custom API.

Step 1: Research

Kickoff

As a solo designer and developer for this project, I began by defining clear goals for Yakker: to create a lightweight, anonymous social media platform inspired by Twitter, but without the pressure of personal branding. I conducted a competitive audit of popular platforms, documenting early assumptions and identifying critical research questions to guide the build.

Target Users & Privacy

I identified my target users as people who actively use social media platforms but are highly protective of their personal data and privacy. These include students, professionals, and casual users who seek a space to express themselves freely without the pressure of revealing their identity or sharing sensitive information.

Competitive Analysis

I examined onboarding and interaction patterns across platforms like Twitter, Facebook, and Reddit, and found that lengthy sign-up flows often lead to user drop-off. Privacy-conscious users, in particular, experience added friction when asked to provide personal details like email addresses. Yakker addresses this by minimizing barriers, allowing users to post immediately after sign-up without requiring email verification.

Key Insights

  • Users are more likely to engage when onboarding is simple and non-invasive.
  • Removing popularity metrics encourages authentic content.
  • Anonymity boosts posting frequency but needs moderation.
  • Transparency around data collection builds trust.

Step 2: Ideation

User Stories

For the user stories, I have split them up on various user action categories: Authentication, Posts, Comments, Navigation, Profile, and General.

Authentication

Feature User Story
Log In Users can log in to post, comment, and manage content.
Log Out Users can log out to keep their account secure.
Sign Up Users can sign up with just a username and password.
Permissions Users can only edit or delete their own content.
Like Rules Users can only like/unlike others' posts and comments.
Follow Rules Users can follow others but not themselves.
Login Status Users can see if they’re currently logged in.
Session Persistence Users stay logged in until they choose to log out.

Posts

Feature User Story
Create Users can post to share images, thoughts, or updates.
Edit Users can edit their posts anytime.
Delete Users can delete posts they no longer want.
Details Users can view post details like time, author, and comments.
Like Users can like posts to show support.
Unlike Users can remove likes if they change their mind.

Comments

Feature User Story
Create Users can comment on posts to join the discussion.
Delete Users can delete their own comments.
Read Users can read comments to see others’ thoughts.
Edit Users can edit their comments later.
Like Users can like comments to show appreciation.
Unlike Users can unlike comments if they change their mind.

Navigation

Feature User Story
Nav Bar Users see a nav bar on every page for easy navigation.
Page Speed Users can navigate pages quickly without full reloads.
404 Page Users see a styled 404 page for invalid URLs.
500 Page Users see a consistent 500 error page for server issues.
Inf. Scroll Users can scroll to load more posts/comments without clicking links.
Conditional Nav Users see relevant nav links based on login status.

Profile

Feature User Story
Avatars As a user I can view user avatars to visually identify them.
User Profiles As a user I can view detailed pages for users showing their posts and stats.
Follow/Unfollow As a user I can follow or unfollow users to customize my feed.
Popular Users As a user I can see the most followed profiles to find trending accounts.

General

Feature User Story
Search As a user I can search for posts or users to quickly find what I'm looking for.
About Page As a user I can easily find the 'About' link in the nav to learn about the platform’s purpose.

Step 3: Designing

Wireframes

In the early stages of the design process, I adopted a mobile-first approach by sketching out key screens on paper. This allowed me to quickly visualize core user flows and focus on content hierarchy, clarity, and essential interactions. After solidifying the basic structure, I translated these sketches into digital low-fidelity wireframes using Whimsical. These wireframes helped define layout and user flow while keeping the visuals intentionally minimal. Since the primary goal of this project was to deepen my development skills, I chose to move directly into development after the low-fidelity stage. I used the wireframes as a functional blueprint to guide the front-end build and ensure that the app’s key features, posting, following users, and engaging anonymously, were implemented with a clear and consistent structure. While I didn’t create high-fidelity mockups, I continuously refined UI components during development to balance usability with simplicity.

Paper Wireframes

I began with hand-drawn wireframes to quickly explore layout and flow options without committing to visuals. This helped me rapidly ideate and sketch out key screens such as the homepage, user feed, and post interaction views.

Paper wireframes

Low-Fidelity Wireframes: Mobile

After validating core flows, I moved into digital low-fidelity wireframes using Whimsical. I quickly visualized the layout of the social feed, creating posts, commenting on other user's posts, and the user's profile page, ensuring all user needs are met.

Low fidelity wireframes of mobile feed Low fidelity wireframes of creating posts on mobile Low fidelity wireframes of commenting on mobile Low fidelity wireframes of profile page on mobile

Low-Fidelity Wireframes: Desktop

To refine the layout for desktop screens, I transitioned into the digital wireframes for desktop, introducing more accurate sizing and key UI components. This phase focused on improving clarity in post layout, profile summaries, and feed structure.

Low fidelity wireframes of desktop feed
Low fidelity wireframes of creating posts on desktop
Low fidelity wireframes of commenting on desktop
Low fidelity wireframes of profile page on desktop

Database Model

After completing the wireframes, I used Whimsical to create the relational database model, outlining the core entities and their relationships. This step helped me visualize how different pieces of data would interact within the system, ensuring a logical and scalable structure before moving on to development. Mapping the model early on also made it easier to identify potential issues and refine the data flow across the application.

Digital Model

The final database model included five main tables: User, Post, Comment, Yakfile, and Following. Using the digital model, I was able to clearly define the data types and relationships between tables. For example, one-to-many relationships between Users and Posts or Posts and Comments, and many-to-many relationships for reyakks to posts. Each table was mapped out with specific fields such as unique IDs, image uploads, text fields, and foreign keys to ensure proper data linkage. This step provided a clear structural foundation that made implementing the back-end logic more straightforward and efficient.

Digital database model

Style Guide

I created the the style guide for Yakker with the goal to create a fun, modern, and readable user experience that reflects the platform’s casual and community-driven vibe. It features two primary fonts sourced from Google Fonts: Fredoka One, a playful and bold cursive used for headers, post titles, and navigation to establish a clear visual hierarchy; and Raleway, a clean and simple sans-serif chosen for body text and longer content to maximize readability.

Logo

The logo was created using Logo.com. The goal was to feature a fun, cartoon illustration of a yak to nicely tie the platform name and logo together.

Yakker Logo

Colour Palette

The colour palette, inspired by a scheme developed by Logo.com, strategically uses a primary colour for most text, a secondary colour to highlight interactive elements like links and buttons on hover, and an accent colour to emphasize key details such as usernames and active navigation links. Together, these choices ensure a cohesive and approachable aesthetic that supports Yakker’s goal of fostering open, low-pressure social interaction.

Colour palette of Yakker

Step 4: Development

Languages & Libraries

  • React (React Router, React Bootstrap, Infinite Scroll)
  • HTML5
  • CSS3
  • JavaScript
  • Axios for HTTP requests
  • Font Awesome & Google Fonts
  • Cloudinary for image hosting
  • Heroku for deployment
  • PostgreSQL database

Development Process

I developed the Django REST API in a separate GitHub repository to keep the back end and front end decoupled and modular. On the front end, I used React with React Router DOM for client-side navigation and React Bootstrap for streamlined UI components. Axios was used to handle all HTTP requests, allowing seamless communication between the front end and the API. This setup enabled efficient state management, component reuse, and faster debugging throughout the build process.

Tools & Programs

  • Git & GitHub with Kanban
  • Heroku
  • PostgreSQL
  • Whimsical for wireframing
  • ESLint & W3C CSS Validator
  • Favicon.io & Logo.com

Testing & QA

Comprehensive manual testing was performed across key features including navigation flows, user authentication, post creation and editing, commenting, following functionality, infinite scroll behaviour, and responsiveness across device sizes.

Code quality was maintained using ESLint and W3C validation tools, helping ensure consistent styling, accessibility, and performance best practices throughout the project lifecycle.

Final Product

Although the live deployment has since expired, I documented key screenshots of the final product to showcase Yakker’s core interface, including responsive layouts and essential features like posting, following, and viewing profiles. The final build stayed true to the platform’s original vision: a clean, anonymous social experience designed to reduce pressure and prioritize authentic expression. Thoughtful UI choices such as soft tones, intuitive navigation, and minimal distractions helped create a space that felt both modern and approachable. As both the designer and developer, I brought this concept to life from the ground up, translating my wireframes directly into functional code. The process deepened my skills in front-end architecture, API integration, and human-centred design.

Reflection

Working on this project was a genuinely enjoyable experience. I appreciated the opportunity to take ownership of both the design and development process, which allowed me to fully immerse myself in building the product end-to-end. However, working solo also highlighted how valuable it would be to collaborate within a larger team environment. Having dedicated designers and developers to brainstorm with, exchange ideas, and iterate collectively would bring fresh perspectives and help push the project even further. I am especially eager to work in a more Agile setup, where cross-functional collaboration and continuous feedback drive the process.

On the design side, I see great value in investing more time into creating high-fidelity wireframes and prototypes before diving deep into development. This would help double-check that all user needs are met early on, reducing the risk of costly changes later and ensuring a smoother development workflow. Overall, this project has strengthened my passion for building meaningful products, and I look forward to contributing in team-based environments where I can learn from others and help deliver even better solutions.