|
1 | | -# MildStack App |
| 1 | +# 🖥️ MildStack Desktop |
2 | 2 |
|
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.** |
4 | 4 |
|
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. |
8 | 6 |
|
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> |
10 | 10 |
|
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 |
13 | 12 |
|
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. |
16 | 17 |
|
17 | | -## Scope |
| 18 | +## 🏗 Built for Developers |
18 | 19 |
|
19 | | -Current scope: |
| 20 | +MildStack Desktop is built with a modern stack optimized for performance and safety: |
20 | 21 |
|
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. |
25 | 26 |
|
26 | | -Deferred roadmap work, not current setup: |
| 27 | +## 🗺 Roadmap |
27 | 28 |
|
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: |
35 | 30 |
|
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 |
37 | 37 |
|
38 | | -## How it works |
| 38 | +--- |
39 | 39 |
|
40 | | -The app is split across the standard Electron process boundaries: |
| 40 | +## 🤝 Contributing |
41 | 41 |
|
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. |
46 | 43 |
|
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! |
50 | 47 |
|
51 | | -## Local setup |
| 48 | +## 📄 License |
52 | 49 |
|
53 | | -Install dependencies: |
| 50 | +MIT. Part of the MildStack ecosystem. |
54 | 51 |
|
55 | | -```bash |
56 | | -npm install |
57 | | -``` |
| 52 | +--- |
58 | 53 |
|
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> |
0 commit comments