Meet Scribe: A Modern, Real-Time, Social Writing Experience Powered by Appwrite

Rediscover the Joy of Writing on a Modern Social Platform

Meet Scribe: A Modern, Real-Time, Social Writing Experience Powered by Appwrite

✒️ Introduction

I'm thrilled to present my submission for the #AppwriteHackathon – Scribe! Scribe is a revolutionary app that aims to reignite the passion for writing and personal expression in the fast-paced, impersonal world of social media. With Appwrite's cutting-edge backend-as-a-service technology, I have built a platform that encourages users to pour their hearts out and embrace the art of writing once again.

👥 Team Details

📑 Project Description

Scribe provides users with a refreshing platform where they can dive into the world of long-form content, meaningful connections, and authentic self-expression. The app features a personalized feed that showcases posts from users they choose to follow. By tailoring the content to their preferences, users can immerse themselves in a world of diverse perspectives, insightful stories, and thought-provoking ideas.

🔑 Key Features:

  • Personalized Feed 📚: Scribe provides users with a curated feed that showcases posts from the users they choose to follow. By tailoring the content to their preferences, users can immerse themselves in a world of diverse perspectives, insightful stories, and thought-provoking ideas.

  • Discover New Voices 🌟 (Live Soon): With a "Random Users to Follow" box, Scribe empowers users to explore and connect with a wide range of content creators. This feature serves as a gateway to discovering fresh voices, hidden talents, and unique perspectives that might have otherwise remained undiscovered.

  • Live Search Functionality 🔎: Scribe's live search feature enables users to find posts on specific topics, enhancing their ability to connect with like-minded individuals and explore content that resonates with their interests. It provides a seamless and efficient way to discover relevant posts in real-time.

  • Versatile Post Visibility 👁️: Scribe offers users the freedom to decide the visibility of their posts. Whether they want to keep their writing private, share it exclusively with their followers, or make it accessible to everyone, Scribe allows for customization, catering to individual preferences and comfort levels.

  • Fostering Connections 🤝: Scribe facilitates meaningful connections through its "Follow and Unfollow" feature. Users can connect with others who inspire them, spark intellectual conversations, and cultivate a supportive community of fellow writers and readers.

  • Like and Bookmark ❤️: With the ability to like and bookmark posts, Scribe encourages active engagement and appreciation for well-crafted content. Users can express their admiration for posts that resonate with them, bookmarking those they wish to revisit later, and creating a personal collection of inspiration.

  • Liked Posts and Bookmarked Posts Pages 📑 (Live Soon): Scribe provides dedicated sections where users can easily access their liked posts and bookmarked content. These pages offer a convenient way to revisit and engage with previously enjoyed posts, ensuring that no gem of inspiration is lost or forgotten.

  • Real-Time Updates ⏰: Scribe's real-time updates feature keeps users informed about the engagement their posts receive. Instant notifications of likes and bookmarks foster a sense of connection, validation, and feedback, motivating users to continue sharing their heartfelt thoughts.

🛠️ Tech Stack

  • FrontEnd: HTML, CSS, JavaScript, Bootstrap

  • BackEnd: Node.js, TypeScript

  • Database: Appwrite Cloud

  • Session Storage (WIP): Appwrite Cloud

  • Real-Time Updates: Server-Sent Events

  • CI/CD: Render

  • Linting: ESLint, Prettier, Commitlint

💪 Challenges Faced

  1. Complex Documentation: One of the challenges I encountered during the development process was navigating through the Appwrite documentation. At times, it felt overwhelming and difficult to find the specific information I needed. I found myself experimenting and tinkering with the documentation until I achieved the desired results. Fortunately, the Appwrite team was highly responsive and helpful on Discord, which helped me overcome these hurdles effectively (Many thanks, Steven 😁).

  2. Limited User Account Features: I opted to use AppWrite Cloud (because it was required for the #Appwrite hackathon). However, I faced limitations with the Account/Users feature. The current authentication options are limited to email or phone numbers, which didn't align with my preference of using custom fields such as usernames for user authentication. To maintain a centralized source of truth for user data, I chose not to go the route of using a separate collection to store such data. Instead, I opted to handle the authentication logic and store the user data in its separate collection.

  3. Limited Real-Time Functionality: As I didn't leverage the Account/Users feature, I faced challenges implementing Appwrite's real-time functionality on the FrontEnd. While there might be a way to use real-time functionality on the BackEnd without a user account, I didn't explore that option extensively as it would require finding a way to send updates to the FrontEnd. To address this, I chose to utilize Server-Sent Events (SSE) as a one-directional alternative to real-time updates. Although SSE served my needs adequately, I may consider switching to a bidirectional technology like WebSockets in the future for more comprehensive real-time functionality.

🚀 Upcoming Features

  • Comment Functionality 💬: Engage in lively conversations and discussions by commenting on posts within Scribe. Share your thoughts, ask questions, and build connections through meaningful interactions.

  • Brand-New Hashnode-like Editor 📝: A brand-new Hashnode-like editor will be coming to Scribe soon. This editor will provide a seamless and user-friendly interface for creating and formatting content, making it easier than ever for users to write and publish their thoughts and ideas.

  • Notifications Page 📬: Stay updated and never miss a beat with the new Notifications page. Receive alerts for new comments, likes, followers, and other relevant activities, ensuring you're always connected to the Scribe community.

  • Revamped Profile Page 👤: Showcase your writing journey with a redesigned profile page. Customize your profile, highlight your best posts, and let others discover the essence of your unique writing style.

  • Settings Page ⚙️: Personalize your Scribe experience with the new Settings page. Tailor the app's preferences, notification settings, and privacy options to create a comfortable and secure environment for your writing.

  • AI Recommendations On Users To Follow 🤖👥: Discover even more inspiring voices and writers to connect with through AI-powered recommendations. Scribe's intelligent algorithms analyze your interests and preferences to suggest users who align with your writing style and topics of interest.

  • AI Recommendations On Posts You Might Like 🤖❤️: Uncover captivating posts tailored to your tastes with AI-powered recommendations. Scribe's algorithms understand your reading habits and preferences, offering personalized suggestions that broaden your horizons and keep you engaged.

🧑🏽‍💻 Code Repo

Link: https://github.com/omzi/scribe

In the code repository, you will find the complete source code of Scribe, showcasing how I leveraged Appwrite's services to bring this app to life. I created a helper class to access the service I needed. I also created an Express session store powered by Appwrite. It is a WIP which I'll be releasing as a package soon.

Link: usescribe.site

The demo recording provides a visual demonstration of the functioning app, highlighting its key features and user interface.

⚗️ Test Credentials

Don't want to go through the hassle of creating a new account to test out Scribe? Here are some demo credentials you use to log in and have a feel of the application:

  • Username: scribe, Password: qwerty

  • Username: appwrite, Password: qwerty

  • Username: hashnode, Password: qwerty

  • Username: omzi, Password: (Care to guess 😅?)

📽️ Demo Video

Link: [Coming Soon]

The demo recording provides a visual demonstration of the functioning app, highlighting its key features and user interface.

✨ Conclusion

Scribe, powered by Appwrite, is not just an app; it's a movement that invites users to break free from the constraints of short-form content and embrace the beauty of long-form expression. I believe that writing has the power to foster meaningful connections and encourage authentic self-expression.

I am grateful to Appwrite and Hashnode for the opportunity to participate in the Appwrite Hackathon and showcase my passion for BackEnd development (and good UI 😍). Through this journey, I have not only enhanced my abilities but also made an impact (however tiny) on the open-source community. Fast-paced events like this (hackathons, internships, etc.) ALWAYS makes me learn a thing or two while improving my skills.

Have any constructive feedback for me? I’d love to know in the comments section below or via a Twitter DM (I’d prefer this). Connect with me on Twitter (@0xOmzi).

Connect with Appwrite:
- Website: https://appwrite.io/
- Twitter: @appwrite
- GitHub: https://github.com/appwrite/appwrite

Connect with Hashnode:
- Website: hashnode.com
- Twitter: @hashnode

Mata ne
PS: I also posted this article on Scribe. Check it out.