Skip to content

Theo-Darvoux/WikINT

Repository files navigation

WikINT Deep Technical Documentation

Project Purpose

WikINT is a course materials platform built for Telecom SudParis / IMT-BS. It functions as a collaborative knowledge base where students upload, organize, review, and consume academic materials (PDFs, Office documents, images, audio, video, code files). Think of it as a student-run wiki where every content change goes through a pull request review process before being published to the browsable tree.

The platform serves a dual purpose:

  1. Knowledge preservation across academic years (materials persist and version)
  2. Collaborative curation where students collectively build and maintain a shared study resource library

Architectural Overview

WikINT follows a three-tier architecture with a clear separation of concerns:

┌─────────────────────────────────────────────────────────────────┐
│                        NGINX Reverse Proxy                       │
│            (TLS termination, path routing, rate limiting)         │
└──────┬──────────────────────┬───────────────────┬───────────────┘
       │                      │                   │
       ▼                      ▼                   ▼
┌──────────────┐    ┌──────────────────┐   ┌──────────────┐
│   Next.js    │    │   FastAPI (API)   │   │  OnlyOffice  │
│  Frontend    │    │   + ARQ Workers   │   │  Document    │
│  (SSR/CSR)   │    │                  │   │  Server      │
└──────────────┘    └───────┬──────────┘   └──────────────┘
                            │
              ┌─────────────┼─────────────────┐
              │             │                 │
              ▼             ▼                 ▼
        ┌──────────┐  ┌──────────┐     ┌──────────────┐
        │PostgreSQL│  │  Redis   │     │ MinIO / S3   │
        │  (data)  │  │(cache/   │     │ (file store) │
        │          │  │ queues)  │     │              │
        └──────────┘  └──────────┘     └──────────────┘
              │
              ▼
        ┌──────────────┐
        │ MeiliSearch  │
        │ (full-text)  │
        └──────────────┘

Pattern: Service-Oriented Monolith. The API is a single FastAPI application, but internally it is organized into distinct domains (routers, services, models) that could be extracted into separate services if needed. Background processing is handled by ARQ workers running the same codebase.

Tech Stack

Layer Technology Version
Frontend Next.js (App Router), React, TypeScript, Tailwind CSS Next.js 15
API FastAPI, SQLAlchemy 2 (async), Pydantic v2 Python 3.13
Database PostgreSQL (via asyncpg) 15+
Migrations Alembic
Cache / Queues Redis (via redis-py async + ARQ)
Object Storage S3-compatible (MinIO dev, Cloudflare R2 prod)
Search MeiliSearch
Malware Scanning YARA rules + MalwareBazaar API
Document Editing OnlyOffice Document Server
Observability OpenTelemetry + Prometheus
Reverse Proxy Nginx

Documentation Map

Architecture

Modules

Core Infrastructure

Data Layer

API Endpoints

Business Services

Background Workers

Security

Frontend

Flows

About

Le Wiki de l'INT

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors