Vtorio LLC

vidane d6cc24772b refactor(api): migrate from REST API to server actions for file operations 6 ay önce
.kilocode 5bffc8a922 feat: add mcp.json configuration for context7 and sequentialthinking servers 6 ay önce
.vscode dad53e4369 WIP 6 ay önce
app d6cc24772b refactor(api): migrate from REST API to server actions for file operations 6 ay önce
components 3d1f510cd2 feat(db): add layout configuration models and enable database connection 6 ay önce
hooks 1e60f50162 feat: add UI components for card, dropdown menu, form, input, label, navigation menu, select, skeleton, table, textarea, toast, and toaster 6 ay önce
lib 3d1f510cd2 feat(db): add layout configuration models and enable database connection 6 ay önce
prisma b4f84fe9c8 feat(cintas): add production environment configuration and enhance summary calculation 6 ay önce
public b4803eacbd docs: update implementation plan for Cintas Install Calendar Summary feature 6 ay önce
.dockerignore 0c574399e1 Initial commit after add content from prior repo. 6 ay önce
.env 3d1f510cd2 feat(db): add layout configuration models and enable database connection 6 ay önce
.env.local 880a806a06 chore(config): add prisma generate script to package.json 6 ay önce
.env.production b4f84fe9c8 feat(cintas): add production environment configuration and enhance summary calculation 6 ay önce
.gitignore a40c2826df feat(env): add environment configuration files for database and Kinde authentication 6 ay önce
DATABASE_SETUP.md 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 ay önce
Dockerfile 642a5a1fb8 build(docker): add prisma generate step to docker build process 6 ay önce
IMPLEMENTATION_PLAN.md b4803eacbd docs: update implementation plan for Cintas Install Calendar Summary feature 6 ay önce
KINDE_SETUP.md 5b63d4ae5a feat: integrate Kinde authentication into Next.js application 6 ay önce
README.md f8dc85ec91 docs: replace default Next.js README with comprehensive project documentation 6 ay önce
components.json 1e60f50162 feat: add UI components for card, dropdown menu, form, input, label, navigation menu, select, skeleton, table, textarea, toast, and toaster 6 ay önce
docker-compose.yml 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 ay önce
eslint.config.mjs 9aee7858e7 chore(lint): disable explicit-any rule and add type annotations for any types 6 ay önce
middleware.ts 745b56f4f0 fix(middleware): update import path for withAuth and refactor middleware function 6 ay önce
next.config.ts 880a806a06 chore(config): add prisma generate script to package.json 6 ay önce
package-lock.json ccf17c8815 WIP 6 ay önce
package.json 880a806a06 chore(config): add prisma generate script to package.json 6 ay önce
postcss.config.mjs 0c574399e1 Initial commit after add content from prior repo. 6 ay önce
tailwind.config.ts 1e60f50162 feat: add UI components for card, dropdown menu, form, input, label, navigation menu, select, skeleton, table, textarea, toast, and toaster 6 ay önce
test-upload.html 87d3d5b65d feat: persist uploads in PostgreSQL via Prisma ORM 6 ay önce
tsconfig.json 0c574399e1 Initial commit after add content from prior repo. 6 ay önce

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.