GitHub - MarconLP/snapify: Screen recording sharing for absolutely everyone.
Service

GitHub - MarconLP/snapify: Screen recording sharing for absolutely everyone.

MarconLP
2025.03.01
ยทGitHubยทby Anonymous
#Screen Recording#Loom Alternative#Self-hosted#Open Source#Web Development

Key Points

  • 1Snapify is an AGPL-3.0 licensed, self-hostable application designed as a Loom alternative for capturing and sharing unlimited screen recordings from tabs, desktops, or applications.
  • 2Key features include sharing recordings via public links, setting deletion timeframes, and the ability to upload existing video files.
  • 3Its setup involves configuring environment variables for database connectivity (MySQL), GitHub OAuth for authentication, and AWS S3-compatible storage (like Backblaze B2) for media management.

Snapify is an open-source, self-hostable alternative to commercial screen recording platforms like Loom, designed for asynchronous video communication. Distributed under the AGPL-3.0 license, it enables users to record and share screen content, including specific tabs, the entire desktop, or individual applications. Key features include the ability to make unlimited recordings, share them via unique public links, set expiration or un-listing timeframes for recordings, and upload/share pre-existing video files.

The core methodology for setting up and deploying Snapify involves a multi-faceted approach encompassing development environment configuration, dependency management, database integration, authentication, and object storage.

  1. Project Initialization: The process begins by cloning the Git repository: git clone https://github.com/MarconLP/snapify.git. Dependencies are then installed using npm (Node Package Manager) via npm i, indicating a JavaScript/TypeScript-based project, likely leveraging Node.js for backend functionalities and a framework like Next.js for the full-stack application (evidenced by next.config.mjs and npm run dev).
  1. Environment Configuration: Critical application settings are managed through a .env file, duplicated from .env.example. This file contains sensitive information and configuration parameters:
    • NEXTAUTH_SECRET: A cryptographic key generated using openssl rand -base64 32, essential for NextAuth.js, which is utilized for secure authentication within the application.
    • DATABASE_URL: Specifies the connection string for the MySQL database. The project integrates with Prisma ORM for database interactions, with schema migrations managed via npx prisma db push, ensuring the database schema aligns with the application's data models.
    • OAuth Authentication: GitHub OAuth is configured for user authentication. This requires GITHUB_ID and GITHUB_SECRET obtained from GitHub Developer Settings, along with setting the Authorization callback URL to <SnapifyURL>/api/auth/callback/github<Snapify URL>/api/auth/callback/github for successful authentication flow.
    • Object Storage: Video recordings are stored using an AWS S3-compatible object storage solution (e.g., Backblaze B2). Configuration includes AWS_ENDPOINT, AWS_BUCKET_NAME (set to private for data security), AWS_REGION (e.g., us-east-005), AWS_KEY_ID, and AWS_SECRET_ACCESS_KEY. These credentials grant read and write access to the designated storage bucket for handling video uploads and retrievals.
  1. Development and Testing: Once configured, the application can be run in development mode using npm run dev. For End-to-End (E2E) testing, the NEXTAUTH_URL environment variable must be set (e.g., http://localhost:3000 for local development), and tests are executed via npm run test:e2e, implying the use of a testing framework like Playwright (indicated by playwright.config.ts).
  1. Deployment: The project is noted to be deployable on platforms like Vercel, suggesting a serverless-compatible architecture suitable for modern web application deployment.