Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

free4chat Roadmap: Embracing Jodel-like Anonymous Room Chat #34

Open
madawei2699 opened this issue Feb 20, 2025 · 4 comments
Open

free4chat Roadmap: Embracing Jodel-like Anonymous Room Chat #34

madawei2699 opened this issue Feb 20, 2025 · 4 comments
Labels
documentation Improvements or additions to documentation

Comments

@madawei2699
Copy link
Collaborator

free4chat Roadmap: Embracing Jodel-like Anonymous Room Chat

Project Goal: To transform free4chat into a minimalist, room-based anonymous chat platform, inspired by Jodel's core functionalities, while maintaining a focus on privacy and ease of use. Location-Based Services (LBS) will be intentionally omitted in the initial phases to prioritize core anonymity and simplify development.

Core Principles:

  • Anonymity First: User privacy and anonymity are paramount. No personal information collection or tracking.
  • Room-Based Community: Rooms are the central organizing unit, replacing location-based channels.
  • Simplicity & Ease of Use: Keep features minimal and user interface intuitive for rapid adoption and development.
  • Open Source & Community Driven: Encourage community contributions and feedback to shape the project's evolution.

Roadmap Phases:

Phase 1: MVP - Core Room-Based Anonymous Chat (Focus: Web Platform)

  • Objective: Establish a Minimum Viable Product (MVP) that delivers the fundamental Jodel-like anonymous room chat experience on the web, leveraging existing free4chat WebRTC infrastructure.

  • Features to Implement (Based on existing TODOs):

    • Room Management:
      • [x] Public Room Listing: Implement a simple interface to list available public rooms. (Based on "Public rooms discovery, like hot room list or filter rooms by type/tag" TODO)
      • [x] Room Creation: Allow users to create public rooms with a user-defined name/topic.
      • [x] Room Joining: Enable users to anonymously join public rooms.
    • Anonymous Room Chat:
      • [x] Anonymous Text Chat in Room: Utilize existing text chat functionality within rooms, ensuring anonymity.
      • [x] Anonymous Voice Chat in Room: Utilize existing voice chat functionality within rooms, ensuring anonymity.
      • [x] Emoji Support in Text Chat: Retain emoji support in text chat for richer communication.
      • [ ] Persist text messages to browser localStorage (Optional for MVP): Consider adding local storage persistence for text messages if time allows, but not critical for MVP.
    • Basic Room Interaction:
      • [x] Send Text/Emoji Messages: Ensure users can send text and emoji messages within rooms.
      • [x] Voice Communication: Ensure users can engage in voice chat within rooms.
  • Technical Tasks:

    • Frontend (React/Next.js):
      • Develop UI for room listing, creation, and joining.
      • Adapt existing chat UI to function within the room context.
    • Backend (Elixir/Phoenix):
      • Implement room management logic (creation, listing, joining).
      • Ensure seamless integration with existing WebRTC voice and text chat functionalities within the room context.
      • Refactor room discovery mechanism to be room-based instead of location-based.
  • Deliverables for MVP:

    • Functional Web platform where users can:
      • View a list of public chat rooms.
      • Create new public chat rooms.
      • Join public chat rooms anonymously.
      • Engage in real-time text and voice chat within rooms anonymously.

Phase 2: Iteration & Refinement - Enhancing Room Experience (Focus: Web Platform)

  • Objective: Improve the user experience within rooms and add essential features based on initial user feedback and community input.

  • Features to Implement:

    • Room Features Enhancement:
      • [ ] Room permission setting, like public/private type setting: Implement private rooms with password protection for more controlled conversations. (Based on existing TODO)
        • Private rooms should not be listed publicly.
        • Password mechanism using End-to-End Encryption (as described in existing TODO) for enhanced security.
      • [ ] Room Topic/Tags: Allow room creators to add topics or tags to rooms for better categorization and discoverability.
      • [ ] User List in Room (Optional): Consider adding a simple user list within rooms (with anonymous identifiers) to show who is currently participating, if privacy considerations allow.
    • User Experience Improvements:
      • [ ] Persist text messages to browser localStorage (If not implemented in MVP): Implement local storage persistence for text messages to improve user experience.
      • [ ] Safari (WebKit) Compatibility: Improve compatibility with Safari and WebKit-based browsers. (Based on existing TODO)
    • Moderation & Community Tools (Basic):
      • [ ] Report/Flag Message (Basic): Implement a basic message reporting mechanism for users to flag inappropriate content.
      • [ ] Room Description/Rules (Optional): Allow room creators to add a description or basic rules for their room.
  • Technical Tasks:

    • Frontend:
      • Implement UI for private room creation and password entry.
      • Develop UI for room topic/tag display and selection.
      • Enhance chat UI based on user feedback.
    • Backend:
      • Implement private room logic and password verification.
      • Add backend support for room topics/tags.
      • Implement basic moderation features (message reporting).
  • Deliverables for Iteration Phase:

    • Enhanced Web platform with:
      • Private and public rooms.
      • Room topics/tags for better discovery.
      • Improved user experience based on initial feedback.
      • Basic moderation tools.

Phase 3: Future Exploration - Advanced Features & Extensibility (Web & Potential App)

  • Objective: Explore more advanced features and functionalities, potentially including real-time collaboration, AI integration, and considering a future mobile app version, based on community interest and resources.

  • Features to Explore (Based on existing TODOs & new ideas):

    • Advanced Communication Features:
      • [ ] Can send arbitrary data by WebRTC datachannel: Explore and potentially implement the ability to send arbitrary data via WebRTC data channels for future feature expansions.
    • Real-time Collaboration (Optional, Explore if Community Interested):
      • [ ] User real-time collaboration, like whiteboard: Investigate and potentially implement real-time collaboration features like a whiteboard, using CRDTs or other suitable technologies (as listed in existing TODOs).
    • AI Robot Integration (Optional, Explore if Community Interested):
      • [ ] AI Robot user, like game robot who can play or facilitate game: Explore the integration of AI robots for games or other interactive experiences within rooms (as listed in existing TODOs).
    • Security & Privacy Enhancements:
      • [ ] Security enhancement, like coturn TLS setup, end-to-end encryption, etc.: Implement security enhancements, including TURN TLS setup and exploring end-to-end encryption for all communication (as listed in existing TODOs).
      • [ ] Privacy enhancement: Continuously evaluate and implement privacy enhancements.
      • [ ] TURN enable TLS: Enable TLS for TURN servers for improved security (as listed in existing TODOs).
      • [ ] IPV6 support: Explore and implement IPV6 support (as listed in existing TODOs).
    • Mobile App (Future Consideration):
      • [ ] Explore feasibility of developing a mobile app (Android/iOS) based on the Web platform.
  • Technical Tasks:

    • Research and Experimentation: Investigate CRDTs, AI integration, advanced security, and mobile app development frameworks.
    • Community Engagement: Gather community feedback on desired advanced features and prioritize based on interest and feasibility.
    • Iterative Development: Implement selected advanced features in iterative cycles, focusing on quality and user experience.
  • Deliverables for Future Exploration Phase:

    • Potentially enhanced Web platform with advanced features (depending on community interest and feasibility).
    • Feasibility study and potentially a basic mobile app version (depending on resources and community interest).
    • A more robust and feature-rich anonymous room-based chat platform.

Key Considerations:

  • Minimalism: Throughout all phases, maintain a focus on simplicity and avoid feature creep.
  • Community Involvement: Actively engage with the open-source community for contributions, feedback, and collaborative development.
  • Prioritization: Focus on completing MVP features first, then iterate based on user feedback and community priorities.
  • Flexibility: This roadmap is a guide, be prepared to adapt and adjust based on technical challenges, community feedback, and evolving project goals.
@madawei2699 madawei2699 added the documentation Improvements or additions to documentation label Feb 20, 2025
@mickel8
Copy link

mickel8 commented Feb 22, 2025

Hi @madawei2699, just saw your project, really nice job! 🎉

I saw you are using membrane_rtc_engine on your elixir dev branch. Is this currently "main" branch? Did you think about switching to Elixir WebRTC?

@madawei2699
Copy link
Collaborator Author

Hi @mickel8, I plan to switch to https://github.com/elixir-webrtc in the future when I have some free time. I'm looking forward to the datachannel feature, but it seems that elixir-webrtc is still planning this feature, right?

@mickel8
Copy link

mickel8 commented Feb 23, 2025

Actually, we already support them ;)

@madawei2699
Copy link
Collaborator Author

Cool, I'll check it later and switch to it this year!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants