Skip to content

Commit 3761cd0

Browse files
committed
docs: improve README
1 parent 3e85ea3 commit 3761cd0

File tree

1 file changed

+114
-144
lines changed

1 file changed

+114
-144
lines changed

README.md

Lines changed: 114 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Self-hosted • Secure • Mobile-First • No Database Required
1313
[![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6)](https://www.typescriptlang.org/)
1414
[![Tailwind CSS](https://img.shields.io/badge/Tailwind-3-38B2AC)](https://tailwindcss.com/)
1515

16-
[Quick Start](#quick-start)[Features](#features)[Documentation](#documentation)[Contributing](#contributing)[Discussions](https://github.com/chichi13/registry-ui/discussions)
16+
[Prerequisites](#prerequisites)[Installation Production](#installation-en-production)[Features](#features)[Development](#development)[Discussions](https://github.com/chichi13/registry-ui/discussions)
1717

1818
</div>
1919

@@ -23,114 +23,71 @@ Self-hosted • Secure • Mobile-First • No Database Required
2323

2424
Managing Docker images in a self-hosted registry shouldn't require complex tools or compromising on security. **Docker Registry UI** provides a clean, modern interface that works seamlessly with your existing Docker Registry V2 API infrastructure.
2525

26-
**Perfect for:**
27-
28-
- **Teams** managing private Docker images
29-
- **Security-conscious** organizations requiring self-hosted solutions
30-
- **DevOps teams** needing a lightweight registry management tool
31-
- **Developers** who want a simple UI without vendor lock-in
32-
33-
**Key Advantages:**
34-
35-
- **100% Open Source** - MIT licensed, fully transparent
36-
- **No Database** - Stateless architecture, all data from Registry API
37-
- **Bring Your Own Auth** - Integrates with your reverse proxy authentication
38-
- **Privacy First** - Self-hosted, your data stays on your infrastructure
39-
- **Mobile Ready** - Responsive design optimized for all devices
40-
4126
---
4227

43-
## Features
44-
45-
### Security & Architecture
46-
47-
- **External Authentication** - Integrates with reverse proxy (Nginx, Caddy, Traefik) for Basic Auth/OAuth
48-
- **Security First** - Must run behind authenticated reverse proxy, never exposed directly
49-
- **Stateless Design** - No database required, all state managed through Registry API
50-
- **Type-Safe** - Full TypeScript coverage with strict mode and Zod validation
51-
52-
### User Experience
53-
54-
- **Mobile-First Design** - Responsive UI optimized for all devices (mobile to desktop)
55-
- **Dark Mode** - Automatic system preference detection with manual toggle
56-
- **Internationalization** - Multi-language support (English, French)
57-
- **Accessibility** - WCAG 2.1 AA compliant components with keyboard navigation
58-
- **Performance** - Server-side rendering, optimized bundle (<500KB initial)
28+
## Screenshots
5929

60-
### Docker Registry Integration
30+
### Homepage - Repository List
6131

62-
- **Full V2 API Support** - Complete compatibility with Docker Registry V2 API
63-
- **Smart Tag Deletion** - Intelligent three-tier deletion strategy (OCI API → Dummy Manifest → Digest fallback)
64-
- **Repository Management** - Browse, search, and manage repositories and tags
65-
- **Image Metadata** - View architecture, OS, size, and creation dates
32+
![Homepage](.github/homepage.png)
6633

67-
### Developer Experience
34+
### Repository Details - Tags Management
6835

69-
- **Built with Nuxt 4** - Modern Vue 3 framework with Composition API
70-
- **Quality Assured** - ESLint, Prettier, Git hooks, and comprehensive validation
71-
- **Conventional Commits** - Standardized commit message format
72-
- **Documentation** - Comprehensive guides for deployment and development
36+
![Specific Repository](.github/specific-repository.png)
7337

7438
---
7539

76-
## Quick Start
40+
## Prerequisites
7741

78-
Get up and running in minutes:
42+
You need a **Docker Registry V2 API** running. Here's how to start one locally for testing:
7943

8044
```bash
81-
# Clone the repository
82-
git clone https://github.com/chichi13/registry-ui.git
83-
cd registry-ui
84-
85-
# Install dependencies
86-
bun install
87-
88-
# Configure environment
89-
cp .env.example .env
90-
# Edit .env with your Docker Registry URL and credentials
91-
92-
# Start development server
93-
bun run dev
45+
# Generate htpasswd file (username: admin, password: admin)
46+
docker run --rm httpd:2.4-alpine htpasswd -nbB admin admin > registry.password
47+
48+
# Run Docker Registry 3 with authentication and delete enabled
49+
docker run -d -p 5000:5000 \
50+
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
51+
-e REGISTRY_AUTH=htpasswd \
52+
-e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
53+
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password \
54+
-v $(pwd)/registry.password:/auth/registry.password \
55+
-v registry-data:/var/lib/registry \
56+
--name registry \
57+
registry:3
9458
```
9559

96-
The application will be available at `http://localhost:3000`.
97-
98-
**Production Deployment:** This application MUST be deployed behind a reverse proxy with authentication. See [Deployment Guide](#deployment-with-reverse-proxy) for details.
60+
Your registry will be available at `http://localhost:5000` with credentials `admin:admin`.
9961

10062
---
10163

102-
## Screenshots
64+
## Installation en Production
10365

104-
### Homepage - Repository List
105-
106-
![Homepage](.github/homepage.png)
107-
108-
### Repository Details - Tags Management
109-
110-
![Specific Repository](.github/specific-repository.png)
66+
**CRITICAL:** This application MUST be deployed behind a reverse proxy with authentication. Never expose it directly to the internet.
11167

112-
---
68+
**Architecture:**
11369

114-
## Documentation
70+
```
71+
Internet → Reverse Proxy (Auth) → Registry UI (localhost:3000) → Docker Registry
72+
```
11573

11674
### Configuration
11775

11876
#### Environment Variables
11977

12078
Create a `.env` file in the root directory:
12179

122-
| Variable | Required | Default | Description |
123-
| -------------------------- | -------- | ---------------- | ------------------------------------------------------ |
124-
| `NODE_ENV` | Yes | `development` | Environment mode (`development` or `production`) |
125-
| `HOST` | Yes | `127.0.0.1` | Host to bind |
126-
| `PORT` | Yes | `3000` | Port for the application server |
127-
| `REGISTRY_URL` | Yes | - | URL of your Docker Registry V2 API |
128-
| `REGISTRY_USERNAME` | No | - | Username for registry authentication |
129-
| `REGISTRY_PASSWORD` | No | - | Password for registry authentication |
130-
| `REGISTRY_VERIFY_SSL` | Yes | `true` | Verify SSL certificates (MUST be `true` in production) |
131-
| `REGISTRY_TOKEN_CACHE_TTL` | Yes | `300` | Token cache duration in seconds (60-3600) |
132-
| `ENABLE_USER_LOGGING` | No | `false` | Enable user logging from `X-Forwarded-User` header |
133-
| `NUXT_PUBLIC_REGISTRY_URL` | No | `localhost:5000` | Public URL users should use in "docker pull" commands |
80+
| Variable | Required | Default | Description |
81+
| -------------------------- | -------- | ---------------- | ----------------------------------------------------- |
82+
| `NODE_ENV` | Yes | `development` | Environment mode (`development` or `production`) |
83+
| `HOST` | Yes | `127.0.0.1` | Host to bind |
84+
| `PORT` | Yes | `3000` | Port for the application server |
85+
| `REGISTRY_URL` | Yes | - | URL of your Docker Registry V2 API |
86+
| `REGISTRY_USERNAME` | No | - | Username for registry authentication |
87+
| `REGISTRY_PASSWORD` | No | - | Password for registry authentication |
88+
| `REGISTRY_TOKEN_CACHE_TTL` | Yes | `300` | Token cache duration in seconds (60-3600) |
89+
| `ENABLE_USER_LOGGING` | No | `false` | Enable user logging from `X-Forwarded-User` header |
90+
| `NUXT_PUBLIC_REGISTRY_URL` | No | `localhost:5000` | Public URL users should use in "docker pull" commands |
13491

13592
**Example Configuration:**
13693

@@ -143,22 +100,13 @@ REGISTRY_URL=https://registry.example.com
143100
NUXT_PUBLIC_REGISTRY_URL=mypublicregistry.com
144101
REGISTRY_USERNAME=admin
145102
REGISTRY_PASSWORD=your-secure-password
146-
REGISTRY_VERIFY_SSL=true
147103
REGISTRY_TOKEN_CACHE_TTL=300
148104
ENABLE_USER_LOGGING=true
149105
```
150106

151107
---
152108

153-
### Deployment with Reverse Proxy
154-
155-
**CRITICAL:** This application MUST be deployed behind a reverse proxy with authentication. Never expose it directly to the internet.
156-
157-
**Architecture:**
158-
159-
```
160-
Internet → Reverse Proxy (Auth) → Registry UI (localhost:3000) → Docker Registry
161-
```
109+
### Reverse Proxy Configuration
162110

163111
<details>
164112
<summary><b>Nginx Configuration</b></summary>
@@ -281,39 +229,33 @@ docker run -d \
281229

282230
---
283231

284-
### Development
232+
## Features
285233

286-
**Commands:**
234+
### Security & Architecture
287235

288-
```bash
289-
# Development
290-
bun run dev # Start development server
291-
bun run dev-https # Start development server with HTTPS
236+
- **External Authentication** - Integrates with reverse proxy (Nginx, Caddy, Traefik) for Basic Auth/OAuth
237+
- **Security First** - Must run behind authenticated reverse proxy, never exposed directly
238+
- **Stateless Design** - No database required, all state managed through Registry API
239+
- **Type-Safe** - Full TypeScript coverage with strict mode and Zod validation
292240

293-
# Production
294-
bun run build # Build for production
295-
bun run start # Start production server
296-
bun run start:local # Start production server with local .env
297-
bun run preview:static # Preview production build (static)
241+
### User Experience
298242

299-
# Code Quality
300-
bun run lint # Lint code
301-
bun run lint:fix # Lint fix
302-
bun run prettier:check # Check code formatting
303-
bun run prettier:fix # Fix code formatting
304-
```
243+
- **Mobile-First Design** - Responsive UI optimized for all devices (mobile to desktop)
244+
- **Dark Mode** - Automatic system preference detection with manual toggle
245+
- **Internationalization** - Multi-language support (English, French)
246+
- **Accessibility** - WCAG 2.1 AA compliant components with keyboard navigation
247+
- **Performance** - Server-side rendering, optimized bundle (<500KB initial)
305248

306-
**Code Quality Standards:**
249+
### Docker Registry Integration
307250

308-
- **ESLint** - Security rules, import order, TypeScript best practices
309-
- **Prettier** - Consistent code formatting (single quotes, no semicolons)
310-
- **TypeScript** - Strict mode with additional checks
311-
- **Git Hooks** - Pre-commit linting, formatting, and type-checking
312-
- **Conventional Commits** - Standardized commit message format
251+
- **Full V2 API Support** - Complete compatibility with Docker Registry V2 API
252+
- **Smart Tag Deletion** - Intelligent three-tier deletion strategy (OCI API → Dummy Manifest → Digest fallback)
253+
- **Repository Management** - Browse, search, and manage repositories and tags
254+
- **Image Metadata** - View architecture, OS, size, and creation dates
313255

314256
---
315257

316-
### Troubleshooting
258+
## Troubleshooting
317259

318260
<details>
319261
<summary><b>Authentication failures</b></summary>
@@ -343,50 +285,78 @@ This application uses an intelligent **three-tier approach** to delete Docker ta
343285

344286
---
345287

346-
## Contributing
288+
## Development
347289

348-
We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, every contribution makes a difference.
290+
Get started with local development:
349291

350-
**Want to suggest a feature?** Join the discussion on [GitHub Discussions](https://github.com/chichi13/registry-ui/discussions)!
292+
```bash
293+
# Clone the repository
294+
git clone https://github.com/chichi13/registry-ui.git
295+
cd registry-ui
296+
297+
# Install dependencies
298+
bun install
351299

352-
### How to Contribute
300+
# Configure environment
301+
cp .env.example .env
302+
# Edit .env with your Docker Registry URL (http://localhost:5000 for local testing)
353303

354-
1. **Fork** the repository
355-
2. **Create** a feature branch (`git checkout -b feat/amazing-feature`)
356-
3. **Commit** your changes using [Conventional Commits](https://www.conventionalcommits.org/)
304+
# Start development server
305+
bun run dev
306+
```
357307

358-
```
359-
feat(ui): add repository deletion confirmation dialog
308+
The application will be available at `http://localhost:3000`.
360309

361-
Implements a confirmation dialog using Reka UI AlertDialog
362-
to prevent accidental repository deletions.
310+
### Commands
363311

364-
Closes #42
365-
```
312+
```bash
313+
# Development
314+
bun run dev # Start development server
366315

367-
4. **Push** to your branch (`git push origin feat/amazing-feature`)
368-
5. **Open** a Pull Request
316+
# Build
317+
bun run build # Build for production
318+
bun run start # Start production server
369319

370-
### Development Guidelines
320+
# Code Quality
321+
bun run lint # Lint code
322+
bun run prettier:fix # Fix code formatting
323+
```
371324

372-
- Read our [Contributing Guidelines](CONTRIBUTING.md)
373-
- Check existing issues before opening new ones
374-
- Write clear commit messages using Conventional Commits
375-
- Add tests for new features when applicable
325+
### Code Quality
376326

377-
---
327+
- **ESLint** - Security rules, import order, TypeScript best practices
328+
- **Prettier** - Consistent code formatting (single quotes, no semicolons)
329+
- **TypeScript** - Strict mode with additional checks
330+
- **Git Hooks** - Pre-commit linting, formatting, and type-checking
331+
- **Conventional Commits** - Standardized commit message format
378332

379-
### Community
333+
### Contributing
380334

381-
- [GitHub Discussions](https://github.com/chichi13/registry-ui/discussions) - Ask questions, share ideas
382-
- [GitHub Issues](https://github.com/chichi13/registry-ui/issues) - Report bugs and request features
335+
We welcome contributions! Whether it's bug reports, feature requests, or code contributions, every contribution makes a difference.
336+
337+
**Want to suggest a feature?** Join the discussion on [GitHub Discussions](https://github.com/chichi13/registry-ui/discussions)!
338+
339+
**How to Contribute:**
340+
341+
1. Fork the repository
342+
2. Create a feature branch (`git checkout -b feat/amazing-feature`)
343+
3. Commit your changes using [Conventional Commits](https://www.conventionalcommits.org/)
344+
4. Push to your branch
345+
5. Open a Pull Request
346+
347+
Read our [Contributing Guidelines](CONTRIBUTING.md) for more details.
383348

384349
### Tech Stack
385350

386-
- Built with [Nuxt 4](https://nuxt.com/) - The Intuitive Vue Framework
387-
- UI components powered by [Reka UI](https://reka-ui.com/) - Accessible, unstyled components
388-
- Styled with [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework
389-
- Validation with [Zod](https://zod.dev/) - TypeScript-first schema validation
351+
- [Nuxt 4](https://nuxt.com/) - The Intuitive Vue Framework
352+
- [Reka UI](https://reka-ui.com/) - Accessible, unstyled components
353+
- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework
354+
- [Zod](https://zod.dev/) - TypeScript-first schema validation
355+
356+
### Community
357+
358+
- [GitHub Discussions](https://github.com/chichi13/registry-ui/discussions) - Ask questions, share ideas
359+
- [GitHub Issues](https://github.com/chichi13/registry-ui/issues) - Report bugs and request features
390360

391361
---
392362

0 commit comments

Comments
 (0)