Skip to content

Latest commit

 

History

History
99 lines (66 loc) · 3.36 KB

File metadata and controls

99 lines (66 loc) · 3.36 KB

Wiki Backend 🚀

Wiki is a community-driven learning platform designed to connect personal learning journeys with public accountability. Developed by @Shreyvats01, Wiki allows learners to join dedicated communities, track their daily progress, and collaborate in real-time.


🌟 Key Features

👤 User Management & Auth

  • Secure Authentication: Robust signup, signin, and logout flows using JWT and password hashing.
  • Public/Private Profiles: Customizable user visibility settings to control how your learning journey is shared.
  • User Discovery: Search and view profiles by username.

🏘️ Communities (Rooms)

  • Focused Learning: Join specific rooms (e.g., "Learn TypeScript", "Rust 101") to learn alongside others.
  • Real-time Chat: Interactive group communication powered by WebSockets for instant feedback and support.
  • Membership Management: Seamless join/leave functionality with membership state tracking.

📈 Progress Tracking & Missions

  • Daily Missions: Automated or community-driven daily learning tasks (tasks).
  • Progress Monitoring: Track daily completion rates and historical progress to maintain learning streaks.
  • Task Management: Flexible task handling with support for tags and categories.

🛠️ Core Tech Stack

  • Language: Rust
  • Web Framework: Axum (Tokio ecosystem)
  • Database: PostgreSQL with SQLx for type-safe async queries.
  • Real-time: WebSockets for live community interaction.
  • Security: JWT (JSON Web Tokens) and secure password hashing.

🚀 Future Roadmap

  • 🔗 External Integrations: Connect with GitHub and LeetCode for automated progress tracking.
  • 📝 Assignments: Submit community-specific assignments for peer review.
  • 🎖️ Gamification: Rewards and badges for consistent learning and contributions.

🛠️ Getting Started

Prerequisites

Setup

  1. Clone the repository:

    git clone https://github.com/Shreyvats01/wiki-backend.git
    cd wiki-backend
  2. Configure Environment Variables: Create a .env file in the root directory:

    DATABASE_URL=postgres://username:password@localhost:5432/wiki_db
    JWT_SECRET=your_super_secret_key
  3. Database Migration:

    sqlx database create
    sqlx migrate run
  4. Run the Application:

    cargo run

    The server will start at http://0.0.0.0:3000.


📂 Project Structure

  • src/modules/: Domain-driven logic (User, task, Progress, Rooms).
  • src/routes/: API endpoint definitions and routing.
  • src/middleware/: Authentication and request processing logic.
  • src/utils/: Shared utilities for DB, JWT, and configuration.
  • migrations/: SQL migration files for database schema.

🤝 Contributing

Wiki is an evolving project. If you're interested in connecting learning with the public, feel free to open issues or submit pull requests.

Created with ❤️ by Shreyvats01