init
This commit is contained in:
+138
@@ -0,0 +1,138 @@
|
||||
# Personal Internet Cell - Web UI
|
||||
|
||||
A modern React-based web interface for managing your Personal Internet Cell.
|
||||
|
||||
## Features
|
||||
|
||||
- **Dashboard**: Overview of cell status and services
|
||||
- **Peer Management**: Add, remove, and configure WireGuard peers
|
||||
- **Network Services**: DNS, DHCP, and NTP management
|
||||
- **WireGuard**: VPN configuration and status
|
||||
- **Email Services**: Postfix and Dovecot management
|
||||
- **Calendar Services**: Radicale CalDAV/CardDAV management
|
||||
- **File Storage**: WebDAV file storage management
|
||||
- **Routing**: Advanced VPN gateway and routing configuration
|
||||
- **Logs**: System logs and monitoring
|
||||
- **Settings**: Cell configuration and security settings
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **React 19**: Modern React with hooks
|
||||
- **Vite**: Fast build tool and dev server
|
||||
- **Tailwind CSS**: Utility-first CSS framework
|
||||
- **Lucide React**: Beautiful icons
|
||||
- **React Router**: Client-side routing
|
||||
- **Axios**: HTTP client for API communication
|
||||
|
||||
## Development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 18+ and npm
|
||||
- Personal Internet Cell backend running on port 3000
|
||||
|
||||
### Setup
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
2. Start the development server:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
3. Open your browser to `http://localhost:5173`
|
||||
|
||||
### Development Features
|
||||
|
||||
- **Hot Reload**: Changes reflect immediately
|
||||
- **API Proxy**: Requests to `/api/*` are proxied to `http://localhost:3000`
|
||||
- **TypeScript Support**: Full TypeScript support available
|
||||
- **ESLint**: Code linting and formatting
|
||||
|
||||
## Building for Production
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
This creates a `dist/` directory with optimized production files.
|
||||
|
||||
### Preview
|
||||
|
||||
```bash
|
||||
npm run preview
|
||||
```
|
||||
|
||||
This serves the built files locally for testing.
|
||||
|
||||
## API Integration
|
||||
|
||||
The Web UI communicates with the Personal Internet Cell backend API:
|
||||
|
||||
- **Base URL**: `http://localhost:3000` (development)
|
||||
- **Health Check**: `/health`
|
||||
- **API Endpoints**: `/api/*`
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Create a `.env` file to customize the API URL:
|
||||
|
||||
```env
|
||||
VITE_API_URL=http://localhost:3000
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── components/ # Reusable UI components
|
||||
│ └── Sidebar.jsx # Navigation sidebar
|
||||
├── pages/ # Page components
|
||||
│ ├── Dashboard.jsx # Main dashboard
|
||||
│ ├── Peers.jsx # Peer management
|
||||
│ ├── NetworkServices.jsx
|
||||
│ ├── WireGuard.jsx # VPN configuration
|
||||
│ ├── Email.jsx # Email services
|
||||
│ ├── Calendar.jsx # Calendar services
|
||||
│ ├── Files.jsx # File storage
|
||||
│ ├── Routing.jsx # Routing configuration
|
||||
│ ├── Logs.jsx # System logs
|
||||
│ └── Settings.jsx # Cell settings
|
||||
├── services/ # API services
|
||||
│ └── api.js # API client and endpoints
|
||||
├── App.jsx # Main app component
|
||||
├── main.jsx # App entry point
|
||||
└── index.css # Global styles
|
||||
```
|
||||
|
||||
## Styling
|
||||
|
||||
The Web UI uses Tailwind CSS with custom components:
|
||||
|
||||
- **Cards**: `.card` for content containers
|
||||
- **Buttons**: `.btn`, `.btn-primary`, `.btn-secondary`, etc.
|
||||
- **Inputs**: `.input` for form fields
|
||||
- **Status Indicators**: `.status-indicator`, `.status-online`, etc.
|
||||
|
||||
## Browser Support
|
||||
|
||||
- Chrome 90+
|
||||
- Firefox 88+
|
||||
- Safari 14+
|
||||
- Edge 90+
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Follow the existing code style
|
||||
2. Use TypeScript for new components
|
||||
3. Add tests for new features
|
||||
4. Update documentation as needed
|
||||
|
||||
## License
|
||||
|
||||
Part of the Personal Internet Cell project.
|
||||
Reference in New Issue
Block a user