A modern web application for creating and managing custom databases with a flexible schema design.
- Flask 3.x - Python web framework
- MongoEngine - MongoDB ODM
- Flask-JWT-Extended - JWT authentication
- Marshmallow - Validation and serialization
- pytest - Testing framework
- React 18 - UI library
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- React Query - Data fetching
- Zustand - State management
- React Router - Routing
- MongoDB - Document database
datadabble/
├── backend/
│ ├── app/
│ │ ├── __init__.py # App factory
│ │ ├── config.py # Configuration
│ │ ├── extensions.py # Flask extensions
│ │ ├── api/v1/ # API endpoints
│ │ │ ├── auth.py # Authentication
│ │ │ ├── databases.py # Database CRUD
│ │ │ ├── fields.py # Field CRUD
│ │ │ └── entries.py # Entry CRUD
│ │ ├── api/schemas/ # Marshmallow schemas
│ │ ├── models/ # MongoEngine models
│ │ └── utils/ # Utilities
│ ├── tests/ # pytest tests
│ ├── requirements.txt
│ └── run.py
├── frontend/
│ ├── src/
│ │ ├── api/ # API client
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── hooks/ # Custom hooks
│ │ ├── store/ # Zustand stores
│ │ └── types/ # TypeScript types
│ ├── tests/ # Vitest tests
│ ├── package.json
│ └── vite.config.ts
├── docker-compose.yml
└── .env.example
- Python 3.12+
- Node.js 20+
- MongoDB 7+
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment variables
cp ../.env.example .env
# Run the server
python run.pyThe API will be available at http://localhost:5000
cd frontend
# Install dependencies
npm install
# Run development server
npm run devThe frontend will be available at http://localhost:5173
# Copy environment variables
cp .env.example .env
# Start all services
docker-compose up -d| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/auth/register |
Register new user |
| POST | /api/v1/auth/login |
Login, returns JWT |
| POST | /api/v1/auth/logout |
Logout |
| POST | /api/v1/auth/refresh |
Refresh token |
| GET | /api/v1/auth/me |
Get current user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/databases |
List databases |
| POST | /api/v1/databases |
Create database |
| GET | /api/v1/databases/<slug> |
Get database |
| PUT | /api/v1/databases/<slug> |
Update database |
| DELETE | /api/v1/databases/<slug> |
Delete database |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/databases/<slug>/fields |
List fields |
| POST | /api/v1/databases/<slug>/fields |
Create field |
| GET | /api/v1/databases/<slug>/fields/<id> |
Get field |
| PUT | /api/v1/databases/<slug>/fields/<id> |
Update field |
| DELETE | /api/v1/databases/<slug>/fields/<id> |
Delete field |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/databases/<slug>/entries |
List entries (paginated) |
| POST | /api/v1/databases/<slug>/entries |
Create entry |
| GET | /api/v1/databases/<slug>/entries/<id> |
Get entry |
| PUT | /api/v1/databases/<slug>/entries/<id> |
Update entry |
| DELETE | /api/v1/databases/<slug>/entries/<id> |
Delete entry |
cd backend
pytest -v --cov=appcd frontend
npm testSee .env.example for all configuration options:
SECRET_KEY- Flask secret keyJWT_SECRET_KEY- JWT signing keyMONGODB_HOST- MongoDB hostMONGODB_PORT- MongoDB portMONGODB_DB- Database nameCORS_ORIGINS- Allowed CORS origins
MIT