Skip to content

Scribble is a dynamic platform for passionate writers and readers to share and explore stories across various genres. It fosters a vibrant community for creative expression and collaboration.

License

Notifications You must be signed in to change notification settings

Shimu-I/scribble_1.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub repo size GitHub last commit Visitor Count

🎬 Watch Full Video on YouTube

Scribble: A Story Sharing & Writing Platform

Introduction

Scribble is a dynamic platform designed for individuals passionate about reading and writing across various genres. Drawing inspiration from platforms like Wattpad, Webnovel, Fable, Goodreads, GitHub, and Monkey Type, Scribble fosters creative expression, community interaction, and author support. It enables users to write, publish, support, collaborate, and engage with stories in a user-friendly environment.

Motivation

As avid readers and users of platforms like Goodreads, Fable, Wattpad, and Webnovel, we identified the need for a platform that combines the best features of these applications while introducing innovative concepts to enhance interactivity and support for creativity. Scribble was created to reflect our passion for storytelling and community-driven engagement.

Objectives

  • Build a platform for authors and readers to connect through storytelling.
  • Enable community-driven interactions via book-based groups.
  • Allow users to support each other’s work financially or emotionally.
  • Create genre-based weekly contests to encourage creativity.
  • Implement real-time communication using multithreading and socket programming.
  • Provide gamified experiences to keep users engaged.

Technologies Used

Front-End

  • JavaFX: Builds the responsive desktop UI (sign-in, profiles, contests, games).
  • CSS: Styles JavaFX components for enhanced visuals.
  • Figma: Used for UI/UX design and prototyping.

Back-End

  • Java: Powers server-side logic, multithreading (thread pool for client handling), and socket programming (TCP-based real-time chat).

Database

  • MySQL: Stores user data, messages, contests, profiles, books, and groups.

Features

Core Platform Features

  • Support System: Users can support writers whose work they find compelling.
  • Author Collaboration: Users can co-author books with others on the platform.
  • Interactive Reader Community: Readers can comment on and rate books.
  • Community Groups:
    • Each book has a dedicated discussion group.
    • A default group exists for physical book exchanges.
    • Users can create custom book groups and invite others to join.
  • Profile View:
    • Modify personal information.
    • View history, saved books, and supporter records.
    • Track created books, drafts, collaborations, and group memberships.

Weekly Genre-Based Contest System

  • Contests are available for four genres: Fantasy, Thriller Mystery, Youth Fiction, and Crime Horror.
  • Each user can participate once per week.
  • Voting is only available during the current week.
  • At the end of the week:
    • Results are displayed in a “Previous Week” section.
    • Top 3 winners are determined by vote count and ranked.
    • Winners are restricted from participating for the next two weeks to ensure fairness.
  • Rules and Logic:
    • Entry submission and voting are disabled after the week ends.
    • The previous week’s section is read-only to display results.

Multithreading Implementation

Multithreading ensures real-time communication without freezing the UI and handles multiple users simultaneously:

  • Server-Side: A fixed-size thread pool manages incoming client connections. Each client is assigned a handler running in a separate thread. Messages are read, broadcast to the appropriate group, and saved in the database using a thread-safe structure.
  • Client-Side: A dedicated thread listens for incoming server messages, ensuring the JavaFX UI remains responsive. Messages are updated on the UI safely without interrupting user interactions.

Socket Programming Implementation

Sockets enable real-time interaction using TCP-based communication:

  • Server-Side: The server listens for client connections, assigns each client to a communication handler, and groups them by book discussion. Messages are received, broadcasted to the group, and saved in the database. Clients are safely removed from groups upon disconnection.
  • Client-Side: Clients connect to the server, identify themselves with user and group information, send messages to the group, and receive real-time updates. The chat interface distinguishes between the sender and other participants.

Game Section

To enhance engagement, Scribble includes two simple games:

  1. Puzzle Game:
    • Users solve puzzles using book covers.
    • Difficulty levels: 3x3, 4x4, and 6x6.
  2. Tic-Tac-Toe Game:
    • Users play against the computer.
    • Input clears automatically after 20 seconds.
    • The computer uses strategic logic for a higher chance of winning, making the game challenging.

UI Screenshots

Below is an overview of Scribble’s user interface:

  • SignIn and SignOut Page: Entry point for user authentication.
image image
  • Home Page and About Page (No User Signed In): Displays platform information and features.
image image
  • Home Page and Books Library View (After Sign-In): Personalized dashboard and book browsing.
image image
  • Opening a Book and First Chapter: View book details and read chapters.
image image
  • Author Profile and Supporting Page: View author details and support options.
image image
  • Collaboration and Book Status View: Manage co-authoring and book progress.
image image
  • Community Section: Engage in book-based discussions and groups.
image
  • Contest Section:
image
  • Contest section  Fantasy sub-section view (current week and previous week)
image image
  • opening the entry called “The Feather of Fire”
image
  • Contest section  Thriller Mystery sub-section view (current week and previous week)
image image
  • Contest section  Youth Fiction sub-section view (current week and previous week)
image image
  • Contest section  Crime Horror sub-section view (current week and previous week)
image image
  • User Profile View: Displays user history, saved books, and supporter records.
image image
  • Profile Edit: Modify personal information. image

  • User’s Created Books and Drafts: Track authored works and drafts. image

  • Collaboration Requests: View sent and received collaboration requests. image

  • Joined and Owned Groups: Manage group memberships. image

  • Game Section: image

    • Puzzle game view with book cover puzzles. image image image

    • Tic-Tac-Toe game view for user vs. computer gameplay. image

Conclusion

Scribble is a community-focused platform that combines storytelling, collaboration, and real-time interaction. With features like multithreading, socket-based chat systems, genre-based contests, and engaging games, Scribble offers a creative ecosystem for writers and readers. This project has allowed us to explore both the technical and creative aspects of building a vibrant digital community.

Installation

  1. Clone the repository:
    git clone https://github.com/username/scribble.git
  2. Navigate to the project directory:
    cd scribble

Usage

  • Sign Up/Login: Create an account or log in to access features.
  • Write and Publish: Create stories, save drafts, or collaborate with others.
  • Join Groups: Participate in book discussions or create custom groups.
  • Contests: Submit entries to weekly genre-based contests and vote on submissions.
  • Games: Play puzzle or Tic-Tac-Toe games for added engagement.
  • Support Authors: Support writers through the platform’s support system.

Contributing

We welcome contributions to Scribble! To contribute:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-branch).
  3. Make your changes and commit (git commit -m "Add feature").
  4. Push to the branch (git push origin feature-branch).
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Scribble is a dynamic platform for passionate writers and readers to share and explore stories across various genres. It fosters a vibrant community for creative expression and collaboration.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published