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.
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.
- 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.
- 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.
- Java: Powers server-side logic, multithreading (thread pool for client handling), and socket programming (TCP-based real-time chat).
- MySQL: Stores user data, messages, contests, profiles, books, and groups.
- 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.
- 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 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.
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.
To enhance engagement, Scribble includes two simple games:
- Puzzle Game:
- Users solve puzzles using book covers.
- Difficulty levels: 3x3, 4x4, and 6x6.
- 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.
Below is an overview of Scribble’s user interface:
- SignIn and SignOut Page: Entry point for user authentication.


- Home Page and About Page (No User Signed In): Displays platform information and features.


- Home Page and Books Library View (After Sign-In): Personalized dashboard and book browsing.


- Opening a Book and First Chapter: View book details and read chapters.


- Author Profile and Supporting Page: View author details and support options.


- Collaboration and Book Status View: Manage co-authoring and book progress.


- Community Section: Engage in book-based discussions and groups.

- Contest Section:

- Contest section Fantasy sub-section view (current week and previous week)


- opening the entry called “The Feather of Fire”

- Contest section Thriller Mystery sub-section view (current week and previous week)


- Contest section Youth Fiction sub-section view (current week and previous week)


- Contest section Crime Horror sub-section view (current week and previous week)


- User Profile View: Displays user history, saved books, and supporter records.


-
User’s Created Books and Drafts: Track authored works and drafts.
-
Collaboration Requests: View sent and received collaboration requests.
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.
- Clone the repository:
git clone https://github.com/username/scribble.git
- Navigate to the project directory:
cd scribble
- 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.
We welcome contributions to Scribble! To contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Make your changes and commit (
git commit -m "Add feature"
). - Push to the branch (
git push origin feature-branch
). - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.