Skip to content

cyanChill/RepoSift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

RepoSift

Better repository indexing and searching.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About the Project
  2. Getting Started
  3. Features
  4. Contributing
  5. License
  6. Acknowledgments

About the Project

RepoSift is an updated version of GitInspire, aimed to allow for more expandability (ie: Adding support for GitLab and Bitbucket, instead of staying with just GitHub). In addition, this has been rewritten to take more advantage of the features of Next.js.

Previously, we had our backend written in Python using Flask. The problem was with the cold starts and constant need to migrate the database due to using Render's free PostgreSQL database, which only lasts for 90 days.

A short summary of what RepoSift aims to provide is giving developers a platform to come up with ideas more easily through:

  1. A simple interface to search for random repositories through a simple filter through supported providers (for now, only GitHub).
  2. A database of indexed repositories which the community can contribute to expand.

Built With

Next NextAuth.js TypeScript Tailwind CSS Headless UI Vercel Neon PostgreSQL DrizzleORM

Demo

reposift-demo.mp4

(back to top)

Getting Started

Prerequisites

For this project, you're required to have pnpm installed. You can following the guide at pnpm: https://pnpm.io/installation.

Installation

  1. Create a free GitHub OAuth App at https://github.com/settings/developers
  2. Clone the repo
    git clone https://github.com/cyanChill/RepoSift.git
  3. Then install the dependencies by running pnpm i.
  4. Create an .env file, populated with the values specified in the .env.example file.

Setting Up the Database

For this application, I've used Neon as my database provider of choice. Click this for a brief guide on creating a database with Neon. Once we created a database in Neon, we want to push the schema defined in this repository to your database by running pnpm db:push.

  • This runs npx drizzle-kit push:pg --config=drizzle.config.ts.

Ref: https://orm.drizzle.team/kit-docs/overview

Extras

If we want to make any changes to the schema defined in the repository, you can validate the SQL commands needed to update the schema by running pnpm db:generate. This provides us with the SQL queries that reflect the changes made to the database.

  • This runs npx drizzle-kit generate:pg.
  • We rerun this command whenever we make changes to our schema.
  • This will be generated in a /migrations-folder in the root directory of our application (this folder shouldn't exist the first time we run this command).

Visualizing the Database in Browser

Drizzle provides the option to view and manipulate our database in the browser using Drizzle Studio.

  • Just run pnpm db:studio and open up the link in the console (ie: http://127.0.0.1:4983).

Running the Front End

To run the front-end code (in development mode), run pnpm dev while in the client directory.

  • For production, you need to build the code using pnpm build and then do pnpm start to run off that build.
  • A suggestion for hosting this front-end application is Vercel.

(back to top)

Features

Discover

Visitors of RepoSift can view a list of indexed & labeled repositories suggested by users of our applications to help other developers.

  • Users can search through our database of indexed repositories using repository providers, languages, labels, and stars.

Alternatively, developers can utilize simple search, which can search through repositories directly from providers like GitHub, however, with a more limited filter.

A great benefit of our labeling system is that a developer can label a repository as Abandoned to bring more awareness to it and hope for other developers to pick it up or suggest alternatives.

Contribute

With the core of our application being developers helping other developers by suggesting repositories to our database and labeling them accordingly, we allow:

  • GitHub accounts with an age >3 months to index repositories to grow our database to help others.
  • GitHub accounts with an age >1 year to create labels to help better refine the search process by giving more options on how a repository can be identified.

GitHub Login

As an application aimed around repository providers, we allow users to sign in with those accounts. Currently, the only provider supported is GitHub, with GitLab & Bitbucket planned in the future.

(back to top)

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Acknowledgments

(back to top)

About

Better repository indexing and searching.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published