Skip to content
forked from MarconLP/snapify

Screen recording sharing for absolutely everyone.

License

Notifications You must be signed in to change notification settings

hanneshui/snapify

 
 

Repository files navigation

Snapify

The self-hostable Loom alternative.
Learn more »

Uptime Github Stars Commits-per-month Pricing twitter

Website - Issue - Bug report

Snapify allows you to record and share recordings asynchronously

  • Make unlimited recordings of your tab, desktop, and any application
  • Share recordings with anyone using a public link
  • Delete or un-list recordings after a specific timeframe
  • Upload and share existing videos

Development

Setup

  1. Clone the repo into a public GitHub repository (or fork https://github.com/MarconLP/snapify/fork). If you plan to distribute the code, make sure to comply with our LICENSE.md.

    git clone https://github.com/MarconLP/snapify.git
  2. Go to the project folder

    cd snapify
  3. Install packages with npm

    npm i
  4. Set up your .env file

    • Duplicate .env.example to .env

    • Use openssl rand -base64 32 to generate a key and add it under NEXTAUTH_SECRET in the .env file.

    • Fill in the other variables
      Configure DATABASE_URL
      1. Open Railway and click "Start a New Project", and select Provision "MySQL".
      2. Select the MySQL App and copy the DATABASE_URL into the .env.
      Obtaining the Github API Credentials
      1. Open Github Developer Settings.
      2. Next, go to OAuth Apps from the side pane. Then click the "New OAuth App" button. Make sure to set Authorization callback URL to <Snapify URL>/api/auth/callback/github replacing Snapify URL with the URI at which your application runs.
      3. Copy the Client ID as GITHUB_ID into the .env.
      4. Next, click "Generate a new client secret" and copy the Client secret as GITHUB_SECRET into the .env.
      Obtaining the AWS S3 API Credentials
      1. Open B2 Cloud Storage Buckets.
      2. Create a new Bucket, make sure to set the bucket to private to make sure files are not being made publicly available.
      3. Copy the Endpoint as AWS_ENDPOINT and the Bucket name as AWS_BUCKET_NAME into the .env. Additionally you need to add the AWS_REGION, which is part of the endpoint and should look like this: us-east-005.
      4. Next, go to Application Keys from the side pane. Then create a new Application Key, with full read and write access to the bucket.
      5. Copy the keyID as AWS_KEY_ID and the applicationKey as AWS_SECRET_ACCESS_KEY into the .env.
  5. Set up the database using the Prisma schema

    npx prisma db push
  6. Run (in development mode)

    npm run dev

E2E-Testing

Be sure to set the environment variable NEXTAUTH_URL to the correct value. If you are running locally, as the documentation within .env.example mentions, the value should be http://localhost:3000.

# In a terminal just run:
npm run test:e2e

Deployment

Vercel

Deploy with Vercel

Contributing

Please see our contributing guide at CONTRIBUTING.md

License

Distributed under the AGPLv3 License. See LICENSE.md for more information.

About

Screen recording sharing for absolutely everyone.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 95.4%
  • JavaScript 3.7%
  • Other 0.9%