Skip to content

Commit 4d647c1

Browse files
authored
Merge pull request #6 from michasdev/feat/sqs-resource-browser
Feat/sqs resource browser
2 parents 938e140 + cc3190f commit 4d647c1

29 files changed

Lines changed: 1550 additions & 273 deletions

README.md

Lines changed: 54 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,102 +2,85 @@
22
<picture>
33
<source media="(prefers-color-scheme: dark)" srcset="apps/desktop/src/renderer/src/assets/logos/mildstack-logo-full-white.png">
44
<source media="(prefers-color-scheme: light)" srcset="apps/desktop/src/renderer/src/assets/logos/mildstack-logo-full-black.png">
5-
<img alt="MildStack Logo" src="apps/desktop/src/renderer/src/assets/logos/mildstack-logo-full-black.png" width="400">
5+
<img alt="MildStack Logo" src="apps/desktop/src/renderer/src/assets/logos/mildstack-logo-full-black.png" width="450">
66
</picture>
77
</p>
88

9-
# MildStack
10-
11-
> A lightweight, local-first AWS emulator built for developers. The best localstack alternative.
12-
13-
MildStack is an open-source project that helps you run and test AWS-like services locally with a focus on speed, simplicity, and low resource usage.
14-
15-
It is designed to be a practical alternative for local cloud development, without unnecessary overhead.
16-
17-
## Why MildStack?
18-
19-
Working with AWS-based applications locally can be slow, heavy, or fragmented.
20-
21-
MildStack aims to make that experience better by being:
22-
23-
- lightweight
24-
- fast
25-
- developer-friendly
26-
- open-source
27-
- easy to extend
28-
- suitable for local development workflows
29-
30-
## What it is
9+
<p align="center">
10+
<strong>The Lightweight, Drop-in Replacement for LocalStack.</strong><br />
11+
Fast, Open Source, and Developer-First.
12+
</p>
3113

32-
MildStack is being built as a small ecosystem around a core emulator.
14+
<p align="center">
15+
<a href="https://mildstack.dev">Website</a> •
16+
<a href="#key-features">Key Features</a> •
17+
<a href="#supported-services">Supported Services</a> •
18+
<a href="https://discord.gg/your-invite">Community</a>
19+
</p>
3320

34-
The project currently includes:
21+
---
3522

36-
- a Go-based core for the emulator and API
37-
- a CLI for local control and startup
38-
- a desktop app for a more visual experience and resource browsing
39-
- a web presence for documentation and project info
23+
## ⚡️ What is MildStack?
4024

41-
## Project goals
25+
MildStack is a high-performance, local-first AWS emulator designed to streamline your cloud development workflow. Unlike heavy alternatives that require Docker and significant system resources, MildStack is built in **Go** for maximum efficiency and speed.
4226

43-
MildStack is intended to be:
27+
Stop waiting for containers to spin up. Start building instantly with a local cloud that feels "mild" on your CPU but "spicy" on productivity.
4428

45-
- a local AWS-like emulator
46-
- simple to run and use
47-
- performant and memory-efficient
48-
- modular by design
49-
- consistent across services
50-
- easy to evolve over time
29+
## ✨ Why MildStack?
5130

52-
## Tech stack
31+
- **🚀 Instant-On**: No Docker required. MildStack runs as a native binary, starting in milliseconds.
32+
- **🖥️ Desktop App**: A beautiful, intuitive UI to browse S3 buckets, query DynamoDB tables, and monitor SQS queues without leaving your IDE.
33+
- **🍃 Ultra-Lightweight**: Minimal RAM and CPU footprint. Keep your machine cool while simulating complex cloud architectures.
34+
- **🔌 Drop-in Compatibility**: Works seamlessly with official AWS SDKs and CLI. Just change your endpoint URL.
35+
- **📡 Offline-First**: Build and test your cloud applications on a plane, a train, or anywhere without an internet connection.
36+
- **💰 100% Free**: No "Pro" tiers for basic features. Everything you need for local development, open-source and free.
5337

54-
The project is centered around:
38+
## 🛠 Supported Services
5539

56-
- **Go** for the core runtime, API, and CLI
57-
- **Gin** for the HTTP API
58-
- **Charm** for the terminal UI and CLI experience
59-
- **Electron** for the desktop app
60-
- **React** for the website and docs
40+
MildStack is rapidly evolving. We currently provide robust support for core AWS services:
6141

62-
## Design principles
42+
| Service | Status | Features |
43+
| :--- | :--- | :--- |
44+
| **S3** | ✅ Active | Bucket management, Multipart uploads, Metadata support |
45+
| **DynamoDB** | ✅ Active | Tables, GSI/LSI support, Rich querying & filtering |
46+
| **SQS** | ✅ Active | Message queues, DLQ redrive, FIFO support |
47+
| **SNS** | 📅 Planned | Topic publishing, basic subscriptions |
48+
| **Lambda** | 📅 Planned | Local execution of serverless functions |
49+
| **EventBridge** | 📅 Planned | Event-driven architecture simulation |
6350

64-
The core of the project follows:
51+
## 📦 The Ecosystem
6552

66-
- **Domain-Driven Design**
67-
- **Clean Architecture**
68-
- **SOLID principles**
53+
MildStack isn't just an emulator; it's a complete development environment:
6954

70-
The goal is to keep the emulator core independent from frameworks and easy to maintain as new services are added.
55+
### 1. The Core Engine
56+
Written in Go, our core provides a high-concurrency, low-latency API that mimics AWS service behavior with precision.
7157

72-
## Philosophy
58+
### 2. The MildStack CLI
59+
A modern, terminal-based control center (powered by Charm/BubbleTea) to manage your local instances, view logs, and monitor service health.
7360

74-
MildStack is built around a few simple ideas:
61+
### 3. The Desktop Browser
62+
An Electron-powered visual console that gives you a "Production-like" experience for inspecting your local resources. Browse objects, edit items, and peek at messages with ease.
7563

76-
- local-first
77-
- developer-first
78-
- performance-oriented
79-
- minimal overhead
80-
- clear architecture
81-
- open-source friendly
64+
---
8265

83-
## Current status
66+
## 🗺 Roadmap
8467

85-
MildStack is still in early development.
68+
Our goal is to cover the 80% of AWS services used in 95% of applications. Check our [Roadmap](https://mildstack.dev/roadmap) to see what's coming next, including Lambda support, IAM simulation, and more.
8669

87-
This README is intentionally lightweight and provisional until the project has proper installation docs, usage guides, and service-specific documentation.
70+
## 🤝 Contributing
8871

89-
## Contributing
72+
We love contributors! Whether you're fixing a bug, adding a new service, or improving the documentation, your help is welcome.
9073

91-
Contributions are welcome.
74+
1. Check out our [Contribution Guidelines](CONTRIBUTING.md).
75+
2. Join our [Discord community](https://discord.gg/your-invite) to discuss ideas.
76+
3. Spread the word! 🌟
9277

93-
If you want to help, you can:
78+
## 📄 License
9479

95-
- suggest services to emulate first
96-
- review architecture decisions
97-
- improve documentation
98-
- test the project locally
99-
- help build core features
80+
MildStack is released under the **MIT License**. Build freely.
10081

101-
## License
82+
---
10283

103-
MIT.
84+
<p align="center">
85+
Built with ❤️ for developers by <a href="https://github.com/michasdev">Michel</a> and the community.
86+
</p>

apps/desktop/README.md

Lines changed: 37 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -1,153 +1,56 @@
1-
# MildStack App
1+
# 🖥️ MildStack Desktop
22

3-
MildStack App is an open source desktop app for browsing and inspecting resources from MildStack, a localstack-like local AWS environment.
3+
**The Visual Console for your Local Cloud.**
44

5-
The project is currently in its foundation stage. It starts from an electron-vite Electron,
6-
React, and TypeScript application and is being shaped into a local developer console for
7-
MildStack workflows.
5+
MildStack Desktop is a cross-platform companion app for [MildStack](https://github.com/michasdev/mildstack). It provides an intuitive, production-grade interface to manage, browse, and inspect your local AWS-compatible resources without touching the command line.
86

9-
## What it is
7+
<p align="center">
8+
<img src="../../apps/desktop/resources/screenshot-placeholder.png" alt="MildStack Desktop Interface" width="100%">
9+
</p>
1010

11-
MildStack App gives developers a desktop UI for local MildStack resources so they do not
12-
need to reach for raw command-line checks for every inspection task.
11+
## ✨ Features
1312

14-
The version 1 target is local MildStack resource browsing. For version 1, real AWS account
15-
management is not supported for the version 1 local MildStack browsing scope.
13+
- **📂 S3 Explorer**: Browse buckets, navigate prefixes (folders), upload objects, and inspect metadata with a modern file-manager experience.
14+
- **📊 DynamoDB Browser**: Query tables using a rich UI, filter items, edit attributes, and visualize your data structures instantly.
15+
- **📩 SQS Monitor**: Peek at messages, monitor queue depths, and manage Dead Letter Queues (DLQ) with ease.
16+
- **🛠 Instance Management**: Start, stop, and switch between multiple MildStack runtime instances directly from the UI.
1617

17-
## Scope
18+
## 🏗 Built for Developers
1819

19-
Current scope:
20+
MildStack Desktop is built with a modern stack optimized for performance and safety:
2021

21-
- Cross-platform Electron desktop app using React and TypeScript.
22-
- Contributor documentation, local setup, and build scripts from the existing project.
23-
- A strict Electron boundary where privileged MildStack communication belongs outside the
24-
renderer.
22+
- **Electron & Vite**: Fast startup and smooth transitions.
23+
- **React & TypeScript**: Robust, type-safe UI components.
24+
- **IPC Safety**: Privileged communication with the MildStack core is handled outside the renderer process for maximum security.
25+
- **Clean Architecture**: Decoupled features that allow for rapid extension to new AWS services.
2526

26-
Deferred roadmap work, not current setup:
27+
## 🗺 Roadmap
2728

28-
- Tailwind CSS renderer styling.
29-
- CossUI setup through the planned shadcn CLI path.
30-
- Multipage desktop navigation.
31-
- Typed MildStack IPC from renderer to preload to main.
32-
- Generic MildStack resource browsing.
33-
- Dedicated S3 explorer.
34-
- Dedicated DynamoDB explorer.
29+
We are continuously adding new capabilities to the desktop experience:
3530

36-
No current local setup step depends on these deferred items.
31+
- [x] S3 Bucket & Object Browsing
32+
- [x] DynamoDB Table & Item Exploration
33+
- [x] SQS Message Peeking
34+
- [ ] Lambda Log Stream Monitoring
35+
- [ ] IAM Policy Visualizer
36+
- [ ] CloudFormation Stack Viewer
3737

38-
## How it works
38+
---
3939

40-
The app is split across the standard Electron process boundaries:
40+
## 🤝 Contributing
4141

42-
- `src/main/` owns the Electron main process, native window lifecycle, privileged IPC handlers,
43-
and future MildStack command coordination.
44-
- `src/preload/` owns the safe bridge exposed to the renderer.
45-
- `src/renderer/src/` owns the React and TypeScript UI that runs in the renderer process.
42+
We welcome contributions to the desktop app! Whether it's improving the UI, adding new service browsers, or fixing bugs.
4643

47-
Renderer code must not import Electron directly or call shell APIs directly. MildStack
48-
communication will be implemented behind Electron main/preload APIs in a later phase, then
49-
exposed to React through a typed renderer-safe contract.
44+
1. Fork the repository.
45+
2. Check the [Local Setup Guide](https://github.com/michasdev/mildstack/blob/main/apps/desktop/CONTRIBUTING.md) (coming soon).
46+
3. Submit a PR!
5047

51-
## Local setup
48+
## 📄 License
5249

53-
Install dependencies:
50+
MIT. Part of the MildStack ecosystem.
5451

55-
```bash
56-
npm install
57-
```
52+
---
5853

59-
Start the local Electron development app:
60-
61-
```bash
62-
npm run dev
63-
```
64-
65-
Preview the built Electron app:
66-
67-
```bash
68-
npm run start
69-
```
70-
71-
## Available scripts
72-
73-
The current `package.json` scripts are:
74-
75-
- `npm run format` - Format the repository with Prettier.
76-
- `npm run lint` - Run ESLint.
77-
- `npm run typecheck:node` - Typecheck Electron main, preload, and build config code.
78-
- `npm run typecheck:web` - Typecheck the React renderer and preload type declarations.
79-
- `npm run typecheck` - Run node and web typechecks.
80-
- `npm run start` - Preview the Electron app with electron-vite.
81-
- `npm run dev` - Start the Electron development app.
82-
- `npm run build` - Typecheck and build with electron-vite.
83-
- `npm run postinstall` - Install Electron Builder app dependencies.
84-
- `npm run build:unpack` - Build and produce an unpacked Electron Builder output.
85-
- `npm run build:win` - Build a Windows package.
86-
- `npm run build:mac` - Build a macOS package.
87-
- `npm run build:linux` - Build Linux packages.
88-
89-
## Project structure
90-
91-
```text
92-
src/
93-
main/ Electron main process
94-
preload/ Renderer-safe preload bridge
95-
renderer/
96-
index.html Renderer HTML shell
97-
src/ React renderer source
98-
resources/ Desktop app resources
99-
build/ Packaging support files
100-
```
101-
102-
Configuration lives in:
103-
104-
- `electron.vite.config.ts` - Electron Vite main, preload, and renderer build config.
105-
- `tsconfig.node.json` - TypeScript config for Electron-side code.
106-
- `tsconfig.web.json` - TypeScript config for renderer-side code.
107-
- `electron-builder.yml` - Cross-platform packaging config.
108-
109-
## Roadmap
110-
111-
Version 1 is planned as a sequence of foundation and browsing work:
112-
113-
1. Project and renderer foundation: README, renderer structure, and renderer aliases.
114-
2. Tailwind and CossUI setup: planned styling and component foundation.
115-
3. Desktop app shell and navigation: planned multipage app shell.
116-
4. Typed MildStack Electron API: planned renderer to preload to main communication.
117-
5. Generic resource browser: planned local MildStack service and resource inspection.
118-
6. S3 explorer: planned dedicated bucket, prefix, object, and metadata browsing.
119-
7. DynamoDB explorer: planned dedicated table, metadata, and item browsing.
120-
121-
These roadmap items describe planned work, not current completed functionality.
122-
123-
## Contributing
124-
125-
MildStack App is intended to be public open source software. Contributions should preserve
126-
the desktop Electron target, keep renderer code browser-safe, and document only behavior that
127-
exists in the current codebase unless it is clearly marked as planned roadmap work.
128-
129-
Use the current npm scripts for validation before submitting changes:
130-
131-
```bash
132-
npm run typecheck
133-
npm run lint
134-
```
135-
136-
## S3 smoke test
137-
138-
The app now includes a smoke runner for the MildStack S3 surface:
139-
140-
```bash
141-
npm run s3:smoke
142-
```
143-
144-
By default it targets the local MildStack runtime API at
145-
`http://127.0.0.1:4566/api/v1/runtime/services/s3`. Override that with
146-
`MILDSTACK_API_BASE_URL` if your server is running elsewhere.
147-
148-
An optional `--native` mode is also available for S3-compatible endpoints via
149-
`@aws-sdk/client-s3`:
150-
151-
```bash
152-
npm run s3:smoke -- --native
153-
```
54+
<p align="center">
55+
Stop guessing. Start seeing. 🚀
56+
</p>

apps/desktop/scripts/dynamo-smoke.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ main().catch((error) => {
4242
});
4343

4444
async function main() {
45-
const endpoint = process.env.MILDSTACK_DYNAMODB_ENDPOINT || process.env.AWS_DYNAMODB_ENDPOINT || `http://localhost:${port}`;
45+
const endpoint = process.env.MILDSTACK_DYNAMODB_ENDPOINT || `http://localhost:${port}`;
4646

4747
console.log(`Running AWS SDK smoke mode against ${endpoint}`);
4848
const client = new DynamoDBClient({

apps/desktop/scripts/s3-smoke.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ function expectDefined(actual, message) {
4343
}
4444

4545
async function main() {
46-
const endpoint = process.env.MILDSTACK_S3_ENDPOINT || process.env.AWS_S3_ENDPOINT || `http://localhost:${port}`;
46+
const endpoint = process.env.MILDSTACK_S3_ENDPOINT || `http://localhost:${port}`;
4747

4848
console.log(`Running S3 behavioral validation against ${endpoint}`);
4949
const client = new S3Client({

apps/desktop/scripts/sqs-smoke.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ main().catch((error) => {
4545
});
4646

4747
async function main() {
48-
const endpoint = process.env.MILDSTACK_SQS_ENDPOINT || process.env.AWS_SQS_ENDPOINT || `http://localhost:${port}`;
48+
const endpoint = process.env.MILDSTACK_SQS_ENDPOINT || `http://localhost:${port}`;
4949

5050
console.log(`Running AWS SDK smoke mode against ${endpoint}`);
5151
const client = new SQSClient({

apps/desktop/src/main/dynamodb-ipc.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { getActiveInstancePort } from './instance-state'
1+
import { resolveLocalEndpoint } from './local-endpoint'
22
import { registerValidatedHandler } from './ipc-middleware'
33
import {
44
DynamoDBClient,
@@ -269,8 +269,7 @@ function getClient(region = 'us-east-1'): DynamoDBClient {
269269
}
270270

271271
function resolveDynamoDBEndpoint(): string {
272-
const port = getActiveInstancePort()
273-
return process.env.MILDSTACK_DYNAMODB_ENDPOINT || process.env.AWS_DYNAMODB_ENDPOINT || `http://127.0.0.1:${port}`
272+
return resolveLocalEndpoint('dynamodb')
274273
}
275274

276275
function normalizeRegion(region?: string): string {

0 commit comments

Comments
 (0)