Channel-Based Posting System: Pretty Face Book Club

A full-stack book club platform that lets users browse books, join discussion channels, and create posts, built with React, Node.js, and CouchDB

Type: Full-Stack Web App

Tech Stack: React, Node.js, CouchDB, React Router, Context API

Overview

A full-stack book club web application where users can have an account, browse books, join book specific discussions by posting reviews or replying to others. The app allows users to interact with a shared book database and even add missing books to the shared database.

My Role & Contributions

This was a solo full-stack project where I designed and implemented both the frontend and backend systems.

Key contributions:

  • Built a React frontend with dynamic routing and reusable components
  • Designed and implemented a REST API for books, posts, and replies
  • Integrated CouchDB for persistent data storage
  • Implemented authentication for users vs. admin access
  • Created search and filtering functionality for books
  • Designed UI flows for posting, replying, and adding new books


Key Features

Book-Based Discussion Channels 📚

Each book has its own dedicated channel where users can view details, give star ratings and participate in discussions through posts and replies.

Search & Filter System 🔍

Users can browse and search the book database, making it easier to find and join wanted discussions.

Post & Reply System 📝

Users can create posts and reply within channels, with all data stored and retrieved from the database in real time.


Technical Details

  • Frontend built with React and React Router for dynamic routing
  • Used Context API for managing authentication state (users vs admin)
  • Backend implemented with Node.js, REST API supporting full CRUD operations
  • Data stored in CouchDB, including books, posts, replies
  • Used modals for creating posts, replies, and adding new books
  • Structured component hierarchy for scalability and reusability

Challenges & Solutions

Challenge: Managing dynamic routing for multiple book channels

Solution:

Used React Router with parameterized routes to dynamically render content for each book


Challenge: Ensuring only authenticated users could post

Solution:

Implemented protected routes and authentication state using Context API to restrict actions based on user status


Challenge: Keeping frontend and database in sync

Solution:

Tested with both valid and invalid inputs and verified data directly in CouchDB to ensure consistency between UI and stored data


What I Learned

  • How to design and connect a full-stack application end-to-end
  • Working with NoSQL databases (CouchDB)
  • Managing authentication and protected routes in React
  • Structuring scalable frontend architecture
  • Testing both frontend behaviour and backend accuracy

Future Improvements

  • Enhance user authentication
  • Add user profiles and activity tracking
    • add ability to track read books

Discover more from kelseyhkeller

Subscribe now to keep reading and get access to the full archive.

Continue reading