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.
- 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
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
- Node.js >= 22
- Bun >= 1.1.42
- PostgreSQL 15
- Redis 7.x
- AWS Account (for S3 and KMS)
- Clone the repository:
git clone https://github.com/yourusername/halycron.git
cd halycron
- Install dependencies:
bun install
- Set up environment variables:
cp ./apps/web/.env.example ./apps/web/.env
- Set up the database:
bunx drizzle-kit migrate
- Start development servers:
bun turbo tun dev
Create a .env
files in the apps directories with the help of the respective .env.example:
- Next.js 15
- TypeScript 5.x
- TanStack Query v5
- Zustand v4
- Tailwind CSS
- shadcn/ui
- Expo v53
- React Native v0.78
- Expo Router
- TanStack Query v5
- Nativewind v4
- Next.js 15 API Routes
- PostgreSQL 15 with Drizzle ORM
- Upstash Redis
- AWS S3
bun dev
- Start all applications in development modebun build
- Build all applications and packagesbun lint
- Run ESLint across the projectbun lint:fix
- Run ESLint across the project with auto-fixingbun format
- Run Prettier across the project
- 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
Contributions are welcome! Please read our Contributing Guide first.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Maintain 90%+ test coverage
- Follow security best practices
- Update documentation for significant changes
- Add appropriate logging for security events
This project is open source and available under the MIT License.