MarconLP / snapify

Screen recording sharing for absolutely everyone.
https://snapify.it
GNU Affero General Public License v3.0
762 stars 106 forks source link

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`. ```sh git clone https://github.com/MarconLP/snapify.git ``` 2. Go to the project folder ```sh cd snapify ``` 3. Install packages with npm ```sh 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](https://railway.app/) 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](https://github.com/settings/apps). 2. Next, go to [OAuth Apps](https://github.com/settings/developers) from the side panel. Then click the "New OAuth App" button. Make sure to set `Authorization callback URL` to `/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](https://secure.backblaze.com/b2_buckets.htm). 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](https://secure.backblaze.com/app_keys.htm) from the side panel. 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 ```sh npx prisma db push ``` 6. Run (in development mode) ```sh 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`. ```sh # In a terminal just run: npm run test:e2e ``` ## Deployment ### Vercel [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FMarconLP%2Fsnapify&env=DATABASE_URL,NEXTAUTH_URL,NEXTAUTH_SECRET,GITHUB_ID,GITHUB_SECRET,AWS_ENDPOINT,AWS_REGION,AWS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_BUCKET_NAME&project-name=snapify&repository-name=snapify) ## Contributing Please see our contributing guide at `CONTRIBUTING.md` ## License Distributed under the AGPLv3 License. See `LICENSE.md` for more information.