https://github.com/kayschima/databasestarter
Database-Starter-Tool for Windows
https://github.com/kayschima/databasestarter
database-management databases mariadb mysql postgresql windows
Last synced: 3 months ago
JSON representation
Database-Starter-Tool for Windows
- Host: GitHub
- URL: https://github.com/kayschima/databasestarter
- Owner: kayschima
- License: mit
- Created: 2026-03-19T18:35:25.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-28T11:48:05.000Z (4 months ago)
- Last Synced: 2026-04-03T00:41:49.299Z (3 months ago)
- Topics: database-management, databases, mariadb, mysql, postgresql, windows
- Language: C#
- Homepage:
- Size: 297 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# đī¸ Database Starter
> Manage portable MySQL, MariaDB & PostgreSQL instances on Windows â without traditional installation.




---
## đ Overview
**Database Starter** is a WPF desktop application that allows you to install, start, stop, and uninstall portable database servers directly on your local machine â without administrator privileges and without Windows services.
The application manages standalone, portable instances of the following database engines:
| Engine | Supported Versions | Default Port |
|--------------|-------------------------------------|--------------|
| đŦ MySQL | 9.5.0, 8.4.7, 8.0.44 | 3306 |
| đĻ MariaDB | 12.2.2, 11.8.6, 11.4.10, 10.11.16 | 3307 |
| đ PostgreSQL | 18.3, 17.9, 16.13, 16.3, 15.17 | 5432 |
---
## ⨠Features
- **One-Click Installation** â Downloads the official portable distribution and extracts it automatically
- **Version Selection** â A specific version per engine can be selected before installation
- **Start / Stop** â Database processes are started and stopped directly as local processes
- **Uninstallation** â Cleanly removes all files of an instance from the system
- **Progress Indicator** â Download progress in percent with status display during installation
- **Live Status** â Colored status indicators (đ´ Not installed / đĄ Installing / đĸ Running / đĩ Stopped)
- **Log Output** â Integrated, expandable log per database instance
- **Settings** â Configuration (paths, ports, versions) is automatically persisted in `settings.json`
- **Graceful Shutdown** â When the application exits, all running servers are shut down gracefully
- **Localization** â Available in German and English (auto-detected from system language)
---
## đŧī¸ Screenshots
*The application uses a modern dark theme in Catppuccin style with cards for each database engine.*
---
## đ ī¸ Prerequisites
- **Windows 10/11** (x64)
- [**.NET 10.0 Runtime**](https://dotnet.microsoft.com/download/dotnet/10.0) (or SDK for building from source)
> âšī¸ No administrator privileges are required. All database files are stored under `%LOCALAPPDATA%\DatabaseStarter`.
---
## đ Installation & Startup
### Option 1: Download Release
1. Download the latest release from the [Releases page](../../releases)
2. Extract the archive to any directory
3. Run `DatabaseStarter.exe`
### Option 2: Build from Source
```bash
# Clone repository
git clone https://github.com//DatabaseStarter.git
cd DatabaseStarter
# Build
dotnet build -c Release
# Run
dotnet run --project DatabaseStarter
```
---
## đ Usage
1. **Select Version** â Choose the desired database version from the dropdown
2. **Install** â Click `đĨ Install` to download and set up the portable distribution
3. **Start** â After installation, the server can be started with `âļ Start`
4. **Connect** â Connect with your preferred client to `localhost` and the displayed port
5. **Stop** â Stop the server with `âš Stop`
6. **Uninstall** â Remove the instance with `đ Uninstall` (only possible when the server is stopped)
---
## đ Project Structure
```
DatabaseStarter/
âââ DatabaseStarter.sln # Solution file
âââ DatabaseStarter/ # WPF main project
âââ App.xaml(.cs) # Application entry point with controlled startup & config validation
âââ MainWindow.xaml(.cs) # Main window (UI)
âââ Converters/
â âââ Converters.cs # WPF Value Converters (Status â Color, etc.)
âââ Data/
â âââ database-versions.json # Version catalog per engine incl. download URLs and extract folders
âââ Models/
â âââ AppSettings.cs # Persisted application settings
â âââ DatabaseDefaults.cs # Loads and validates the external version catalog; provides defaults and helpers
â âââ DatabaseEngine.cs # Enum: MySQL, MariaDB, PostgreSQL
â âââ DatabaseInstanceInfo.cs # Instance configuration (path, port, version, âĻ)
â âââ DatabaseStatus.cs # Enum: NotInstalled, Installing, Installed, Running
â âââ DatabaseVersionInfo.cs # Version information incl. download URL
âââ Resources/
â âââ Strings.resx # Localized strings (default / English)
â âââ Strings.de.resx # Localized strings (German)
â âââ Strings.Designer.cs # Auto-generated resource accessor
âââ Services/
â âââ IDatabaseEngineService.cs # Interface for engine-specific operations
â âââ MySqlEngineService.cs # MySQL implementation
â âââ MariaDbEngineService.cs # MariaDB implementation
â âââ PostgreSqlEngineService.cs # PostgreSQL implementation
â âââ DownloadService.cs # HTTP download with progress reporting
â âââ ProcessService.cs # Process management (start/stop)
â âââ SettingsService.cs # JSON-based settings management
âââ ViewModels/
âââ MainViewModel.cs # Main window ViewModel
âââ DatabaseViewModel.cs # ViewModel per database card
âââ ViewModelBase.cs # INotifyPropertyChanged base class
âââ RelayCommand.cs # ICommand implementation
```
---
## âī¸ Configuration
Database Starter uses two JSON-based configuration files located next to the application output:
- `settings.json` â persisted user settings such as base path, selected language, versions, ports and install locations
- `Data/database-versions.json` â central version catalog for MySQL, MariaDB and PostgreSQL, including download URLs and extract folders
### `settings.json`
User settings are automatically saved in `settings.json` in the application directory:
```json
{
"BasePath": "C:\\Users\\\\AppData\\Local\\DatabaseStarter",
"Language": "en",
"Instances": [
{
"Engine": 0,
"Version": "8.4.7",
"InstallPath": "âĻ\\mysql",
"DataDir": "âĻ\\mysql\\data",
"Port": 3306,
"IsInitialized": false
}
]
}
```
| Field | Description |
|----------------|--------------------------------------------------|
| `BasePath` | Base directory for all database installations |
| `Language` | UI language (`en` or `de`) |
| `Engine` | 0 = MySQL, 1 = MariaDB, 2 = PostgreSQL |
| `Version` | Selected version of the engine |
| `InstallPath` | Installation directory of the portable binaries |
| `DataDir` | Data directory of the database |
| `Port` | TCP port the server listens on |
| `IsInitialized`| Whether the data directory has already been initialized |
### `Data/database-versions.json`
The available database versions are configured in `Data/database-versions.json` and loaded at startup by `DatabaseDefaults`.
```json
{
"MySQL": [
{
"version": "9.5.0",
"displayName": "MySQL 9.5.0",
"downloadUrl": "https://cdn.mysql.com/archives/mysql-9.5/mysql-9.5.0-winx64.zip",
"extractFolder": "mysql"
}
],
"MariaDB": [
{
"version": "12.2.2",
"displayName": "MariaDB 12.2.2",
"downloadUrl": "https://archive.mariadb.org/mariadb-12.2.2/winx64-packages/mariadb-12.2.2-winx64.zip",
"extractFolder": "mariadb"
}
],
"PostgreSQL": [
{
"version": "18.3",
"displayName": "PostgreSQL 18.3",
"downloadUrl": "https://get.enterprisedb.com/postgresql/postgresql-18.3-1-windows-x64-binaries.zip",
"extractFolder": "pgsql"
}
]
}
```
Each engine entry contains an ordered list of versions. The first entry is treated as the default/recommended version.
| Field | Description |
|------------------|------------------------------------------------------------------|
| `version` | Technical version number used for matching and persistence |
| `displayName` | Human-readable label shown in the UI |
| `downloadUrl` | Download URL of the portable archive |
| `extractFolder` | Expected top-level folder name after extraction |
At application startup, `App.xaml.cs` triggers an early validation of `Data/database-versions.json`.
If the file is missing, malformed, or contains invalid entries (for example an invalid URL or empty engine list), the application shows a startup error dialog and exits cleanly.
---
## đī¸ Technology Stack
- **UI Framework:** WPF (.NET 10.0)
- **Architecture:** MVVM (Model-View-ViewModel)
- **Language:** C# 13
- **Persistence:** System.Text.Json
- **Localization:** .resx resource files (German & English)
- **Design:** Catppuccin Mocha Dark Theme
---
## đ¤ Contributing
Contributions are welcome! Here's how:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/my-feature`)
3. Commit your changes (`git commit -m 'Feature: Description'`)
4. Push the branch (`git push origin feature/my-feature`)
5. Create a Pull Request
---
## đ License
This project is licensed under the [MIT License](LICENSE).
---
## â ī¸ Notes
- The downloaded database binaries are subject to the respective licenses of the vendors (Oracle/MySQL, MariaDB Foundation, PostgreSQL Global Development Group).
- This tool is intended for **development and testing purposes** â not for production use.
- The database processes run as local user processes, not as Windows services.