{"id":16907915,"url":"https://github.com/timc1/clips","last_synced_at":"2025-08-18T05:30:58.707Z","repository":{"id":98605052,"uuid":"315389844","full_name":"timc1/clips","owner":"timc1","description":"next.js site for storing and sharing interesting finds from the Internet paired with a macOS menubar app.","archived":false,"fork":false,"pushed_at":"2020-11-24T17:19:43.000Z","size":547,"stargazers_count":54,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-12T07:34:52.817Z","etag":null,"topics":["nextjs","react","swr","vercel"],"latest_commit_sha":null,"homepage":"https://getclips.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timc1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-23T17:26:00.000Z","updated_at":"2025-03-03T04:10:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"c9953e65-7131-4957-aed0-f3e72ececb2b","html_url":"https://github.com/timc1/clips","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/timc1/clips","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timc1%2Fclips","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timc1%2Fclips/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timc1%2Fclips/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timc1%2Fclips/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timc1","download_url":"https://codeload.github.com/timc1/clips/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timc1%2Fclips/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270948724,"owners_count":24673617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nextjs","react","swr","vercel"],"created_at":"2024-10-13T18:49:19.908Z","updated_at":"2025-08-18T05:30:58.616Z","avatar_url":"https://github.com/timc1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clips\n\n[getclips.app](https://getclips.app)\n\nProof of concept, macOS menubar app \u0026 site for storing and sharing interesting finds from the Internet.\n        \n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"600\" src=\"https://user-images.githubusercontent.com/12195101/99995861-d8643e00-2d6f-11eb-81e0-e70f76740c41.gif\" /\u003e\n\u003c/p\u003e\n\nClips is a [Next.js](https://nextjs.org/) app deployed on [Vercel](https://vercel.com). It's sitting on top of a MongoDB instance, uses [swr](swr.vercel.app) for data fetching and caching, [emotion](https://emotion.sh/docs/introduction) for styling, and basic cookie authentication under the hood. The menubar repository can be found [here](https://github.com/timc1/clips-menubar). More details about the project can be found on this [post](https://timcchang.com/clips).\n\n### Setup\n\nI enjoy building things – tinkering with new technologies, dabbling with design, and making things from ideation to launch. Clips is another culmination of my curiosity and the project that I've been experimenting with over the past few months. Clips is completely open – feel free to play with the hosted version on [getclips.app](https://getclips.app) or run your own instance/learn/build on top of it.\n\nClips is sitting on top of a MongoDB instance, uses reCAPTCHA, S3 for hosting images, and Sendgrid for emails. You'll want to grab the relevant keys for these services. The great thing is we can run this all for free!\n\nPostel uses `yarn` to manage dependencies – let's get started:\n\n1. First we'll want to clone the repo – run `git clone git@github.com:timc1/clips.git`\n\n2. Update `.env.example` to `.env.local`. This is where we'll store all keys for development. \n\n3. Setup a MongoDB account and DB [here](https://www.mongodb.com/try). Follow the instructions to create a new collection and grab the uri to connect to the database. Copy the uri into the `MONGO_URI` portion of the `.env`.\n\n4. Setup a Sendgrid account [here](https://signup.sendgrid.com/). Follow the instructions to send basic emails and copy the api key in `SENDGRID_API_KEY`\n\n5. Setup an IAM user with S3 access on your AWS account, and copy the access key id \u0026 secret access key in the `.env` as well. Setup 2 buckets and update [these](https://github.com/timc1/clips/blob/main/lib/constants.ts#L33-L34) constants to reflect them.\n\n6. Setup reCAPTCHA [here](https://www.google.com/recaptcha/admin) and copy the key into `.env`.\n\n7. Set a password for your session cookie – read more about it [here](https://github.com/vvo/next-iron-session).\n\n8. Add a [uuid](https://www.uuidgenerator.net/) to the JWT key.\n\nOkay phew, done!\n\nRun `yarn install` to download dependencies.\n\nThen `yarn start` to get your local server running.\n\nSince we're deploying on Vercel, make sure to edit the contents of [`now.json`](https://github.com/timc1/clips/blob/main/now.json) with your own unique keys. Using the Vercel CLI you can just run `vercel secrets add mongo-uri \u003cKEY_HERE\u003e` for each of the keys.\n\n### Testing\n\nTODO – should've built tests incrementally but here we are. [`react-testing-library`](https://testing-library.com/docs/react-testing-library/intro/) would be rad.\n\nGot questions? Feel free to email me timchang@hey.com or shoot me a DM [@timcchang](https://twitter.com/timcchang)!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimc1%2Fclips","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimc1%2Fclips","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimc1%2Fclips/lists"}