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.
- 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.
- 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.
- 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.
- 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.
- 🔗 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.
- Rust (Edition 2024)
- PostgreSQL
- SQLx CLI (for migrations)
-
Clone the repository:
git clone https://github.com/Shreyvats01/wiki-backend.git cd wiki-backend -
Configure Environment Variables: Create a
.envfile in the root directory:DATABASE_URL=postgres://username:password@localhost:5432/wiki_db JWT_SECRET=your_super_secret_key
-
Database Migration:
sqlx database create sqlx migrate run
-
Run the Application:
cargo run
The server will start at
http://0.0.0.0:3000.
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.
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