Skip to content

AbstergoSweden/test_app_0139

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Venice.ai Image Studio Pro

🎨 Venice.ai Image Studio Pro

A professional-grade, privacy-first AI Image & Video generation studio

Features β€’ Quick Start β€’ Tech Stack β€’ Docs β€’ Contributing

License: MIT TypeScript React 19 Vite PWA Ready Tests Passing

483854870-514bd1e1-6ef5-4403-8d0a-441881c5217e


✨ Features

πŸ€– Multi-Model AI Support

  • Google Gemini (Flash 2.0, Pro, 2.5 Flash)
  • Venice.ai (Flux, SDXL, and more)
  • Video Generation via Veo
  • Seamless model switching

πŸ” Privacy-First Architecture

  • Client-side encryption (AES-GCM)
  • Local storage only (IndexedDB + localStorage)
  • No server-side data collection
  • Password strength enforcement

πŸŽ›οΈ Advanced Controls

  • Seed control for reproducibility
  • Multiple aspect ratios
  • Negative prompts
  • Image upscaling & enhancement
  • Batch generation (variants)

πŸ“± Progressive Web App

  • Install on any device
  • Offline-capable
  • Responsive design
  • Fast loading

πŸš€ Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/AbstergoSweden/image_app_01.git
cd image_app_01

# Install dependencies
npm install

# Configure environment
cp .env.example .env.local
# Edit .env.local with your API keys

# Start development server
npm run dev

Open http://localhost:3000 in your browser.

Using the Setup Script

For automated setup (recommended for CI/new developers):

chmod +x setup_jules.sh
./setup_jules.sh

πŸ› οΈ Tech Stack

Category Technology
Frontend React 19, TypeScript 5.8
Build Tool Vite 6
Styling Tailwind CSS
Icons Lucide React
Testing Vitest (unit), Playwright (E2E)
Linting ESLint 9 + Prettier
Storage IndexedDB (blobs), localStorage (metadata)
Security PBKDF2 + AES-GCM, zxcvbn
PWA vite-plugin-pwa + Workbox

πŸ“ Project Structure

image_app_01/
β”œβ”€β”€ πŸ“ .github/              # GitHub templates & workflows
β”‚   β”œβ”€β”€ ISSUE_TEMPLATE/      # Bug report & feature request templates
β”‚   └── PULL_REQUEST_TEMPLATE.md
β”œβ”€β”€ πŸ“ e2e/                  # Playwright E2E tests
β”‚   └── app.spec.ts
β”œβ”€β”€ πŸ“ src/
β”‚   β”œβ”€β”€ πŸ“ components/       # React UI components
β”‚   β”‚   β”œβ”€β”€ AuthScreen.tsx   # Login/registration with password strength
β”‚   β”‚   β”œβ”€β”€ ChatScreen.tsx   # AI chat interface
β”‚   β”‚   β”œβ”€β”€ Gallery.tsx      # Image gallery with pagination
β”‚   β”‚   β”œβ”€β”€ ImageGenScreen.tsx # Main generation interface
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ πŸ“ services/         # API clients & storage
β”‚   β”‚   β”œβ”€β”€ geminiService.ts # Google Gemini API
β”‚   β”‚   β”œβ”€β”€ veniceService.ts # Venice.ai API
β”‚   β”‚   β”œβ”€β”€ secureStorage.ts # Encrypted localStorage
β”‚   β”‚   └── blobStorage.ts   # IndexedDB for images
β”‚   β”œβ”€β”€ πŸ“ utils/            # Helper functions
β”‚   β”‚   β”œβ”€β”€ crypto.ts        # Encryption utilities
β”‚   β”‚   β”œβ”€β”€ migrations.ts    # Data format migrations
β”‚   β”‚   └── passwordStrength.ts
β”‚   β”œβ”€β”€ πŸ“ types/            # TypeScript definitions
β”‚   β”œβ”€β”€ πŸ“ workers/          # Web Workers
β”‚   β”œβ”€β”€ App.tsx              # Main application
β”‚   └── main.tsx             # Entry point
β”œβ”€β”€ πŸ“„ index.html            # HTML shell
β”œβ”€β”€ πŸ“„ vite.config.ts        # Vite + PWA configuration
β”œβ”€β”€ πŸ“„ tsconfig.json         # TypeScript configuration
β”œβ”€β”€ πŸ“„ eslint.config.js      # ESLint flat config
β”œβ”€β”€ πŸ“„ playwright.config.ts  # E2E test configuration
└── πŸ“„ package.json          # Dependencies & scripts

πŸ“œ Available Scripts

Command Description
npm run dev Start development server
npm run build Production build to dist/
npm run preview Preview production build
npm run test Run unit tests (Vitest)
npm run test:e2e Run E2E tests (Playwright)
npm run lint Run ESLint
npm run format Format code with Prettier
npm run typecheck TypeScript type checking
npm run preflight Full CI check (types + lint + test + build)

βš™οΈ Configuration

Environment Variables

Create a .env.local file (or set in your deployment):

# Google Gemini API Key
# Get one from: https://aistudio.google.com/apikey
GEMINI_API_KEY=your_gemini_key_here

# Venice.ai API Key
# Get one from: https://venice.ai/settings/api
VENICE_API_KEY=your_venice_key_here

πŸ’‘ Tip: API keys can also be entered directly in the app's Settings screen.


πŸ”’ Security

This application follows security best practices:

  • Client-side encryption: All user data is encrypted with AES-GCM before storage
  • PBKDF2 key derivation: Passwords are never stored; they derive encryption keys
  • Password strength: Registration requires minimum strength score (zxcvbn)
  • No telemetry: Zero data sent to external servers (except AI API calls)
  • CSP-ready: Content Security Policy compatible architecture

See SECURITY.md for vulnerability reporting.


πŸ§ͺ Testing

Unit Tests

npm run test           # Run once
npm run test:watch     # Watch mode

E2E Tests

# Install Playwright browsers (first time only)
npx playwright install chromium

# Run E2E tests
npm run test:e2e

# Run with UI
npm run test:e2e:ui

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run npm run preflight to verify
  5. Commit (git commit -m 'Add amazing feature')
  6. Push (git push origin feature/amazing-feature)
  7. Open a Pull Request

πŸ“‹ Known Issues & Roadmap

Current Limitations

  • Large bundle size (~1.3MB) - consider code splitting
  • Some components use any types - TypeScript strict mode pending
  • State management is prop-drilling - consider Zustand/Jotai for scale

Roadmap

  • Code splitting for faster initial load
  • Full TypeScript strict mode compliance
  • State management refactor (Zustand)
  • Cloud sync option (optional, encrypted)
  • Mobile app (React Native / Capacitor)

πŸ“„ License

This project is licensed under the MIT License - see LICENSE for details.


Built with ❀️ for the AI art community

Report Bug β€’ Request Feature

About

Professional-grade, privacy-first AI Image & Video generation studio

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages