Vtorio LLC

vtugulan f6f29dfc78 fix(config): add rewrite rule to handle missing installHook.js.map requests 6 hónapja
app 9ccfffaa6d fix(api-docs): pin scalar api reference to specific version 1.32.9 6 hónapja
prisma 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 hónapja
public 0c574399e1 Initial commit after add content from prior repo. 6 hónapja
.dockerignore 0c574399e1 Initial commit after add content from prior repo. 6 hónapja
.gitignore 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 hónapja
DATABASE_SETUP.md 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 hónapja
Dockerfile 0c574399e1 Initial commit after add content from prior repo. 6 hónapja
README.md f8dc85ec91 docs: replace default Next.js README with comprehensive project documentation 6 hónapja
docker-compose.yml 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 hónapja
eslint.config.mjs 0c574399e1 Initial commit after add content from prior repo. 6 hónapja
next.config.ts f6f29dfc78 fix(config): add rewrite rule to handle missing installHook.js.map requests 6 hónapja
package-lock.json b5c7126a95 feat(api-docs): replace swagger-ui with scalar api reference 6 hónapja
package.json b5c7126a95 feat(api-docs): replace swagger-ui with scalar api reference 6 hónapja
postcss.config.mjs 0c574399e1 Initial commit after add content from prior repo. 6 hónapja
tailwind.config.ts 0c574399e1 Initial commit after add content from prior repo. 6 hónapja
test-upload.html 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 hónapja
tsconfig.json 0c574399e1 Initial commit after add content from prior repo. 6 hónapja

README.md

Vtorio - File Upload & Management System

A Next.js-based file upload and management system with PostgreSQL database storage and comprehensive API documentation.

Features

  • File Upload: Upload files via web interface or API
  • File Management: List, view, and download uploaded files
  • Database Storage: Files stored in PostgreSQL with metadata
  • API Documentation: Interactive Swagger/OpenAPI documentation
  • REST API: Full RESTful API for programmatic access

Quick Start

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • npm or yarn

Installation

  1. Clone the repository
  2. Install dependencies:

    npm install
    
  3. Set up environment variables:

    cp .env.example .env
    # Edit .env with your database credentials
    
  4. Set up the database:

    npx prisma migrate dev
    
  5. Start the development server:

    npm run dev
    

The application will be available at http://localhost:3000 (or next available port).

API Documentation

Interactive Documentation

Visit http://localhost:3000/api-docs for interactive Swagger UI documentation where you can:

  • Test all API endpoints
  • Upload files via the web interface
  • View response schemas and examples
  • Download files directly

API Endpoints

Method Endpoint Description
POST /api/upload Upload a file (multipart/form-data)
GET /api/files List all uploaded files with metadata
GET /api/files/{id} Download a specific file by ID
GET /api/openapi.json Raw OpenAPI specification

Example Usage

Upload a file via curl:

curl -X POST http://localhost:3000/api/upload \
  -F "file=@/path/to/your/file.pdf"

List all files:

curl http://localhost:3000/api/files

Download a file:

curl http://localhost:3000/api/files/{file-id} --output downloaded-file.pdf

Database Schema

The application uses Prisma ORM with the following schema:

  • File: Stores file data and metadata
    • id: Unique identifier
    • filename: Original filename
    • mimetype: MIME type of the file
    • size: File size in bytes
    • data: Binary file content
    • createdAt: Upload timestamp
    • updatedAt: Last update timestamp

Development

Database Management

# Reset database
npx prisma migrate reset

# View database
npx prisma studio

# Generate new migration
npx prisma migrate dev --name your-migration-name

Environment Variables

Create a .env file with:

DATABASE_URL="postgresql://username:password@localhost:5432/vtorio"

Deployment

Docker

# Build and run with Docker Compose
docker-compose up --build

Vercel

  1. Push to GitHub
  2. Import project on Vercel
  3. Add environment variables
  4. Deploy

Technologies Used

  • Next.js 15 - React framework
  • TypeScript - Type safety
  • PostgreSQL - Database
  • Prisma - ORM
  • Tailwind CSS - Styling
  • Swagger UI - API documentation
  • Docker - Containerization

License

MIT License - see LICENSE file for details.