European Master of (countering) Disinformation
A comprehensive e-learning platform by SAUFEX offering 59+ modules on countering disinformation, understanding FIMI (Foreign Information Manipulation and Interference), and protecting democratic processes.
-
🎓 59+ Learning Modules across multiple learning paths
-
🌐 Free & Self-Paced learning experience
-
📚 Multiple Learning Paths:
- Understanding Disinformation Basics
- AI and Hybrid Threats
- Counter-Messaging & Response
- Detection & Verification
- And many more...
-
⏱️ 400+ hours of expert content
-
👥 Expert-curated by SAUFEX Consortium specialists
- Framework: Next.js 16 with App Router
- Styling: Tailwind CSS
- Language: TypeScript
- Deployment: Vercel
- Node.js 18+ and npm
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm startThe application will be available at http://localhost:3000
emod-platform/
├── app/ # Next.js app directory
│ ├── dashboard/ # Dashboard page
│ ├── modules/[slug]/ # Individual module pages
│ ├── login/ # Login page
│ ├── register/ # Registration page
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Homepage
│ └── globals.css # Global styles
├── lib/ # Utilities and data
│ └── modules-data.json # Module content data
├── types/ # TypeScript type definitions
│ └── module.ts # Module type definitions
└── scripts/ # Build scripts
└── parse-modules.mjs # Module parsing script
This project is designed to be deployed on Vercel:
- Push to GitHub repository
- Import to Vercel
- Deploy automatically
Or use the Deploy button at the top of this README for one-click deployment.
The platform works without authentication - users can browse all modules freely. To enable user accounts and progress tracking:
- Go to supabase.com and create a free account
- Create a new project
- In your Supabase dashboard, go to SQL Editor
- Copy the contents of
supabase-schema.sqland run it - This creates the
profilesandmodule_progresstables with Row Level Security
Get your credentials from Project Settings → API:
| Variable | Description |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Your project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Your anon/public key |
Add these to:
- Vercel: Project Settings → Environment Variables
- Local development: Create a
.env.localfile
# .env.local
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key- User registration and login
- Progress tracking across devices
- "Continue where you left off" functionality
- Completion statistics
SAUFEX is an EU Horizon Europe funded research project dedicated to combating Foreign Information Manipulation and Interference (FIMI) and protecting democratic processes.
Learn more at saufex.eu
© 2025 SAUFEX Consortium. All rights reserved.