grabbit 13ce6ae442 feat: implement complete edge device registration system
- Add hardware fingerprinting with cross-platform support
- Implement secure device registration flow with X.509 certificates
- Add WebSocket real-time communication for device status
- Create comprehensive device management dashboard
- Establish zero-trust security architecture with multi-layer protection
- Add database migrations for device registration entities
- Implement Rust edge client with hardware identification
- Add certificate management and automated provisioning system

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-13 08:46:25 +08:00
..

Meteor Web Backend

A NestJS-based backend service for the Meteor application with user authentication.

Features

  • User registration with email/password
  • Password hashing using bcrypt
  • PostgreSQL database with TypeORM
  • Database migrations
  • Input validation
  • Transaction support
  • Comprehensive unit and integration tests

Setup

Prerequisites

  • Node.js (v18 or higher)
  • PostgreSQL database
  • npm or yarn

Installation

npm install

Environment Variables

Create a .env file based on .env.example:

DATABASE_URL=postgresql://user:password@localhost:5432/meteor_dev
BCRYPT_SALT_ROUNDS=10

Database Setup

Run migrations to set up the database schema:

npm run migrate:up

API Endpoints

POST /api/v1/auth/register-email

Register a new user with email and password.

Request Body:

{
  "email": "user@example.com",
  "password": "Password123",
  "displayName": "John Doe"
}

Response:

{
  "message": "User registered successfully",
  "userId": "uuid-string"
}

Validation Rules:

  • Email must be a valid email format
  • Password must be at least 8 characters long
  • Password must contain at least one lowercase letter, one uppercase letter, and one number
  • Display name is required

Error Responses:

  • 400 Bad Request - Invalid input data
  • 409 Conflict - Email already registered
  • 500 Internal Server Error - Server error

Running the Application

Development

npm run start:dev

Production

npm run build
npm run start:prod

Testing

Unit Tests

npm test

Integration Tests

npm run test:e2e

Test Coverage

npm run test:cov

Database Migrations

Create New Migration

npm run migrate:create migration-name

Run Migrations

npm run migrate:up

Rollback Migrations

npm run migrate:down

Project Structure

src/
├── auth/                 # Authentication module
│   ├── dto/             # Data transfer objects
│   ├── auth.controller.ts
│   ├── auth.service.ts
│   └── auth.module.ts
├── entities/            # TypeORM entities
│   ├── user-profile.entity.ts
│   └── user-identity.entity.ts
├── app.module.ts        # Main application module
└── main.ts             # Application entry point

migrations/              # Database migrations
test/                   # Integration tests

Database Schema

user_profiles

  • id (UUID, Primary Key)
  • display_name (VARCHAR, nullable)
  • avatar_url (TEXT, nullable)
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

user_identities

  • id (UUID, Primary Key)
  • user_profile_id (UUID, Foreign Key)
  • provider (VARCHAR) - e.g., 'email'
  • provider_id (VARCHAR) - e.g., email address
  • email (VARCHAR, nullable, unique for email provider)
  • password_hash (VARCHAR, nullable)
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

Security Features

  • Passwords are hashed using bcrypt with configurable salt rounds
  • Email uniqueness validation
  • Input sanitization and validation
  • Database transactions for data consistency
  • No sensitive data exposed in API responses