Skip to content

Halycron is a highly secure, end-to-end encrypted photo storage solution. Store, organize, and manage your photos in your personal or private S3 bucket with zero-knowledge encryption.

License

Notifications You must be signed in to change notification settings

pingSubhajit/halycron

Repository files navigation

Halycron

A highly secure, private photo vault service that allows users to store and manage their photos with end-to-end encryption. Similar to Google Photos in functionality but with a primary focus on security and privacy. Users can store photos in their own S3 bucket or use the provided storage solution.

🌟 Features

  • Secure Photo Storage: End-to-end encryption for all photos with client-side encryption
  • Multi-Platform Support:
    • Web application built with Next.js 15
    • Mobile application using Expo v50 and React Native
  • Advanced Security:
    • Multi-factor authentication
    • Zero-knowledge architecture
    • AES-256-GCM encryption for files
    • RSA-4096 for key exchange
  • Photo Management:
    • Upload and batch upload support
    • Photo tagging and organization
    • Album creation and management
    • Secure thumbnail generation
  • User Control:
    • Custom S3 bucket support
    • Encrypted metadata storage
    • Secure sharing capabilities
  • Modern Development:
    • Full TypeScript support
    • Built with Bun and Turborepo
    • Comprehensive security measures

πŸ“¦ Project Structure

halycron/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ web/          # Next.js 15 web application
β”‚   └── mobile/       # Expo v50 React Native application
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ ui/           # Shared UI components (shadcn/ui)
β”‚   β”œβ”€β”€ eslint-config/# Shared ESLint configuration
β”‚   └── typescript-config/ # Shared TypeScript configuration
β”œβ”€β”€ docs/             # Project documentation

πŸš€ Getting Started

Prerequisites

  • Node.js >= 22
  • Bun >= 1.1.42
  • PostgreSQL 15
  • Redis 7.x
  • AWS Account (for S3 and KMS)

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/halycron.git
cd halycron
  1. Install dependencies:
bun install
  1. Set up environment variables:
cp ./apps/web/.env.example ./apps/web/.env
  1. Set up the database:
bunx drizzle-kit migrate
  1. Start development servers:
bun turbo tun dev

Environment Variables

Create a .env files in the apps directories with the help of the respective .env.example:

πŸ› οΈ Development

Tech Stack

Frontend (Web)

  • Next.js 15
  • TypeScript 5.x
  • TanStack Query v5
  • Zustand v4
  • Tailwind CSS
  • shadcn/ui

Mobile

  • Expo v53
  • React Native v0.78
  • Expo Router
  • TanStack Query v5
  • Nativewind v4

Backend

  • Next.js 15 API Routes
  • PostgreSQL 15 with Drizzle ORM
  • Upstash Redis
  • AWS S3

Available Scripts

  • bun dev - Start all applications in development mode
  • bun build - Build all applications and packages
  • bun lint - Run ESLint across the project
  • bun lint:fix - Run ESLint across the project with auto-fixing
  • bun format - Run Prettier across the project

Security Considerations

  • All API endpoints except authentication require JWT tokens
  • Files are encrypted using AES-256-GCM before upload
  • Each user has a unique master key for encryption
  • MFA is required for all accounts
  • Rate limiting is enabled on all endpoints
  • Regular security audits are performed

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide first.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Maintain 90%+ test coverage
  • Follow security best practices
  • Update documentation for significant changes
  • Add appropriate logging for security events

πŸ“ License

This project is open source and available under the MIT License.

πŸ™ Acknowledgments

About

Halycron is a highly secure, end-to-end encrypted photo storage solution. Store, organize, and manage your photos in your personal or private S3 bucket with zero-knowledge encryption.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published