Skip to content

mindexa/mcms

Repository files navigation

Mindexa CMS

This is the official Content Management System (CMS) for the Mindexa Platform, built from scratch with Flask. It serves as the core system for managing content, users, waitlists, and platform configuration, and integrates directly with the Admin Dashboard used across the main platform.

This repository represents the source-of-truth CMS for Mindexa.


Features

  • Centralized content management (platform-wide)
  • Waitlist management (add and fetch emails)
  • Authentication & authorization with JWT
  • Admin Dashboard integration
  • MongoDB for data storage
  • Modular, scalable architecture (services & routes)
  • Swagger (OpenAPI) documentation for all CMS APIs

Setup & Installation

1. Clone the repository

git clone https://github.com/mindexa/cms.git
cd cms

2. Create a virtual environment

python -m venv venv
source venv/bin/activate   # On macOS/Linux
venv\Scripts\activate      # On Windows

3. Install dependencies

pip install -r requirements.txt

4. Set environment variables

Create a .env file in the project root:

# Flask
FLASK_ENV=
SECRET_KEY=

# JWT
JWT_SECRET_KEY=
JWT_ACCESS_TOKEN_EXPIRES=

# MongoDB
MONGO_URI=""
DB_NAME=""
USER_COLLECTION_NAME=""

# Mail
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=
MAIL_USE_TLS=
MAIL_USE_SSL=
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_DEFAULT_SENDER=

# Activation tokens
ACTIVATION_TOKEN_BYTES=
ACTIVATION_TOKEN_TTL_HOURS=

5. Run the CMS server

flask run

Or

py main.py

The CMS will be available at http://localhost:5000


API Documentation

The Mindexa CMS uses Swagger (OpenAPI) for complete API documentation. Once the server is running, you can explore and test all CMS endpoints via Swagger UI:

http://localhost:5000/apidocs

Swagger UI provides:

  • Auto-generated CMS API documentation
  • Full list of available routes
  • Request & response schemas
  • In-browser endpoint testing

Admin Dashboard Integration

The CMS directly powers the Mindexa Admin Dashboard, enabling admins to:

  • Manage waitlists in real time
  • Control and publish platform content
  • Monitor user statistics and analytics
  • Configure platform-level settings

Tech Stack

  • Python + Flask
  • MongoDB (database)
  • Flask-JWT-Extended (authentication)
  • Swagger (OpenAPI) (API documentation)
  • Vercel (hosting)

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature-name)
  3. Commit your changes (git commit -m 'Add feature')
  4. Push to the branch (git push origin feature-name)
  5. Open a Pull Request

License

This project is licensed under the MIT License.