Datawhiz is a modern, fullstack data platform for connecting, exploring, and managing multiple databases from a single dashboard. It supports SQL and NoSQL (Postgres, MySQL, SQLite, MongoDB), provides a unified UI for schema/record browsing, and is designed for extensibility and developer productivity.
datawhiz/
├── server/ # Go (Gin) API server
│ ├── cmd/ # Entry point
│ ├── internal/ # Handlers, DB drivers, pool manager, etc.
│ ├── api/ # API definitions
│ ├── pkg/ # Shared Go code
│ └── go.mod, go.sum
├── client/ # Next.js (React/TypeScript) web app
│ ├── src/app/ # App source
│ ├── public/ # Static assets
│ ├── package.json, tsconfig.json, next.config.ts
│ └── ...
└── README.md
- Connect to multiple databases (Postgres, MySQL, SQLite, MongoDB)
- Connection pooling with auto-expiry
- Unified schema and record explorer for SQL/NoSQL
- Modern dashboard UI (Next.js, Tailwind CSS)
- User authentication (OAuth, email)
- Query history with execution time
- Toast notifications, protected routes, and more
Coming soon in v2:
- Full CRUD operations for all supported databases
Both backend and frontend require their own .env files. Copy and edit the example files:
Server:
cd server
cp .env.example .env
# Edit server/.env as neededClient:
cd client
cp .env.example .env
# Edit client/.env as neededcd server/cmd/datawhiz
go run server.gocd client
npm install
npm run dev
# or yarn dev / pnpm dev / bun devOpen http://localhost:3000 to view the app.
You can run both backend and frontend with Docker Compose:
docker-compose up --buildThis will build and start both services. The frontend will be available at http://localhost:3000 and the backend at http://localhost:8080.
Datawhiz supports deployment on Render using the included render.yaml:
- Push your repo to GitHub.
- Connect your repo to Render and select the
render.yamlfor blueprint deploy. - Set environment variables for both services in the Render dashboard as needed (see
.env.example). - For the frontend, set
BACKEND_BASE_URLas an environment variable (not a build arg) for runtime API routing.
Note:
- The frontend Next.js app uses
process.env.BACKEND_BASE_URL(orNEXT_PUBLIC_BACKEND_BASE_URLfor client-side code). Set this in your Render or Docker environment. - For production, always use secure values for secrets and API keys.
MIT