AI Community
A friendly, Flask-based platform for machine learning collaboration — share datasets, build projects, compete on leaderboards, and learn together, with industry-aware branding, multi-database support, and flexible authentication.
On this page
Overview & Vision
AI Community (technical/package name Beep.AI.Community) is a Flask web application that makes machine learning accessible to everyone — students, business professionals, and curious explorers alike, with no technical background required. Users can share data with simple uploads, browse and learn from others' work, join friendly competitions with guided steps, and get community support built into the platform.
The application is designed to be branded and deployed per organization: it supports setup-time company identity and industry themes (for example Oil & Gas, Finance, or a General theme), multiple database backends, and two authentication models. It is part of the Beep ecosystem and integrates with MLStudio for one-click project publishing.
Platform Capabilities
Dataset Sharing
Upload and discover datasets with titles, descriptions, tags, categories, and public/private visibility. Common formats such as CSV, JSON, Excel, and Parquet are supported.
Projects
Create and organize ML projects, group datasets and notebooks, link discussions for context, and keep projects public or private.
Competitions & Leaderboards
Join challenges, submit solutions, and track progress on leaderboards. Submissions are evaluated against each competition's defined metric, with team participation supported.
Discussions & Q&A
Ask questions, share knowledge, and collaborate. Discussions can be linked to projects and are searchable and organized by topic.
Industry Branding
Company name, logo, support email, and industry theme flow into navigation, landing pages, and help surfaces — configured through the setup wizard and admin settings.
Flexible Authentication
Choose local JWT authentication for standalone deployments, or Identity Server OAuth2/OIDC for enterprise sign-in. API keys are available for programmatic access.
Quick Start
The platform separates installation (handled by the launcher scripts) from configuration (handled by the Setup Wizard on first run). The launchers bootstrap Python, create a virtual environment (.venv), install everything from requirements.txt, prepare directories and a .env file, then start the app. Python 3.8 or higher is required.
Windows
run.bat
# Or simply double-click run.bat in Windows ExplorerLinux / macOS
./run.sh
# On macOS you can also double-click run.commandAdvanced: Python launcher directly
python run_community.py
# Optional command-line flags:
python run_community.py --port=5003 # Custom port
python run_community.py --host=0.0.0.0 # Listen on all interfaces
python run_community.py --debug # Enable debug mode
python run_community.py --no-browser # Do not open a browser automaticallyBy default the application runs on http://127.0.0.1:5002. On first launch you are automatically redirected to the Setup Wizard; there is no separate setup command or flag.
Setup Wizard (First Run Only)
The wizard handles application-level configuration only — it does not install Python, packages, virtual environments, or system database servers. It walks through the following steps:
| Step | What it does |
|---|---|
| 1. Admin Account | Create the first administrator user (username, email, password). |
| 2. Database Configuration | Select a provider (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server, Oracle, or Firebird), enter a connection string, and test the connection. |
| 3. Authentication Mode | Choose Local JWT (default for standalone) or Identity Server OAuth2/OIDC (enterprise). |
| 4. Branding | Choose an industry theme, set company name, and upload a logo. |
| 5. Complete Setup | Create the database schema, initialize application state, and redirect to the main application. |
Log in with the admin username and password you created during setup.
Core User Areas
The platform is organized around a few high-value workflows:
Home
Overview, featured content, and an industry-aware leaderboard of top performers and recent winners.
Share Data
Upload, describe, and browse datasets. Use clear names, document sources and limitations, and set visibility to match how widely the data should be shared.
Projects
Structure ML work around one clear problem scope, document dataset references, and link discussions for project-specific context.
Competitions
Read the rules and metric, join, prepare and validate a submission file, then submit and review leaderboard feedback.
Discussions
Browse or search conversations, create new threads, attach files for context, and link discussions to projects.
Industries
Industry-aware experiences and branding, driven by the enabled industry themes for the deployment.
Admin Operations
Administrators are responsible for setup, branding, authentication, database settings, and ongoing governance:
- Setup & governance — complete the wizard with deliberate auth and database choices; document ownership of admin accounts and support paths; review provider-specific requirements before rollout.
- Branding & identity — set company identity, logo, and industry theme consistently; keep the support email and help links current; validate icon/theme coverage after branding updates.
- Maintenance checklist — review competition and submission health regularly, audit dataset and project quality signals, and keep help/README content aligned with actual platform behavior.
Architecture
The application follows a Flask application factory pattern (create_app) with a clear separation between web routes, REST API routes, the first-run setup flow, services, and models.
| Layer | Responsibility |
|---|---|
app/routes/web/ | Browser pages: home, datasets, projects, competitions, discussions, industries, profile, admin, and help. |
app/routes/api/v1/ | REST API namespaces registered under /api/v1 (Flask-RESTX). |
app/routes/setup.py | First-run configuration wizard (mounted at /setup). |
app/services/ | Business logic: auth, datasets, projects, competitions, discussions, setup, branding, scoring, theming, and integrations. |
app/models/ | SQLAlchemy ORM models (users, datasets, notebooks, competitions, submissions, discussions, model registry, activity, industry scenarios). |
templates/ | Jinja templates for the UI and the in-app help pages. |
Supporting technologies include SQLAlchemy with Flask-SQLAlchemy for portable persistence (tables are created with db.create_all() and Flask-Migrate/Alembic manages migrations), Flask-RESTX for the documented API, Flask-JWT-Extended for token/cookie auth, Flask-SocketIO for real-time updates, Flask-Limiter for rate limiting, Flask-CORS, and Bleach for HTML sanitization. Pandas, NumPy, and Plotly support data processing and preview; Celery with Redis is available for background tasks. Baseline security headers (X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and a Content-Security-Policy) are applied to every response, and a same-origin check mitigates CSRF on cookie-authenticated writes.
Configuration & Deployment
Installation and configuration are intentionally separated:
- Launcher scripts bootstrap an embedded Python runtime when needed (used only for bootstrap), create the
.venvapplication runtime, install dependencies, create directories, and start the app. - The setup wizard configures the application: admin creation, database provider, authentication mode, and branding/industry setup.
Configuration is portable and repository-local (managed through the config manager and a .env file). Deployment notes: SQLite works for simple or local installations and needs no separate server; PostgreSQL, MySQL/MariaDB, SQL Server, Oracle, and Firebird require their own reachable database server. Identity Server mode requires valid external configuration values (authority URL, client id, and secret).
Database Support
All database drivers ship in requirements.txt and are installed by the launchers; the administrator selects one in the setup wizard.
| Database | Driver | Use Case |
|---|---|---|
| SQLite | Built-in (no package needed) | Development, single-node, local |
| PostgreSQL | psycopg2-binary | Production, high concurrency |
| MySQL / MariaDB | PyMySQL | Shared hosting, general production |
| SQL Server | pyodbc | Enterprise / Microsoft environments |
| Oracle | oracledb | Enterprise environments |
| Firebird | fdb | Embedded / specialized |
Persistence uses the SQLAlchemy ORM, so the same models work across every supported provider.
API & Integration
The platform exposes a versioned REST API under /api/v1, built with Flask-RESTX. Interactive Swagger documentation is served at /api/v1/docs. The following namespaces are registered:
Auth
/api/v1/auth — register and log in (JWT); create API keys for programmatic access.
Datasets
/api/v1/datasets — list, view, upload, and download datasets.
Competitions
/api/v1/competitions — competitions, submissions, and bundles.
Discussions
/api/v1/discussions — threads and replies.
Users
/api/v1/users — profiles, activity, and participation.
Models & Notebooks
/api/v1/models and /api/v1/notebooks — model registry and shared notebooks.
Industry Scenarios
/api/v1/industry-scenarios — industry-aware scenario content.
Health
/api/v1/health — service health check.
Requests are rate-limited by default, and the API accepts JWT tokens via header or cookie. Note that Projects are managed through the web UI rather than a dedicated API namespace.
MLStudio & Ecosystem Integration
AI Community is part of the Beep ecosystem and ships clients for its sibling services:
- MLStudio — MLStudio can publish projects, datasets, and models into the Community platform through the REST API, so work created there can be shared with one click.
- Beep.AI.Server — an optional client for AI-assisted features such as auto-descriptions and LLM-backed help, plus model-related services.
- Identity Server — enterprise deployments can delegate sign-in to Beep.Foundation.IdentityServer via OAuth2/OIDC (authorization-code flow with an
/auth/callbackredirect handled by the app).
Developer Guide
When extending the platform, keep responsibilities in the right layer:
- Locate the correct route group before adding an endpoint; put request/response orchestration in routes.
- Put business rules in services, not in large view functions.
- Keep templates focused on rendering.
- Preserve the installation-versus-configuration split.
- Keep README and in-app help aligned with actual user-facing behavior.
Key modules to understand first: the configuration manager, the setup service, the auth service, the branding service, the main web routes, and the API package under app/routes/api/v1. Branding is treated as part of the platform contract, not a cosmetic afterthought — it flows into navigation, landing pages, and help surfaces.
Running database migrations
flask db init # First time only
flask db migrate -m "Description"
flask db upgradeIn-App Help
Once the application is running, a full help hub is available in the browser:
| Route | Purpose |
|---|---|
/help | Help index and entry point. |
/help/getting-started | User onboarding: accounts, navigation, and first steps. |
/help/datasets-guide | Uploading, organizing, and safely sharing datasets. |
/help/projects-guide | Structuring projects for collaboration and reuse. |
/help/competitions-guide | Joining competitions and managing submissions. |
/help/admin-operations | Branding, auth, database, and governance for admins. |
/help/developer-guide | Setup, architecture, and extension guidance. |
/help/faq | Frequently asked questions. |
/help/ask | Ask a question and choose the right support path. |
Troubleshooting & FAQ
Startup problems
Use the launcher scripts first, check whether the selected port is already in use (start the app on another port with --port=5003), and confirm dependencies installed from requirements.txt.
Setup wizard problems
Verify the connection string matches the selected provider, confirm the target database server is reachable, and re-check auth values if using Identity Server mode.
Embedded Python issues (Windows)
If the automatic bootstrap download fails, run setup_embedded_python.bat manually; on Linux/macOS the launcher falls back to system Python.
Do I need an account?
You can browse public content without one, but uploading datasets, joining competitions, creating projects, and posting in discussions require an account.
Which dataset formats are supported?
Common formats including CSV, JSON, Excel, and Parquet. Specify the format and add a clear description when uploading.
Where can I get more help?
Ask in the discussions section, use the /help/ask page, or contact the support email configured for your deployment.