Better repository indexing and searching.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
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:
- A simple interface to search for random repositories through a simple filter through supported providers (for now, only GitHub).
- A database of indexed repositories which the community can contribute to expand.
reposift-demo.mp4
For this project, you're required to have pnpm
installed. You can following the guide at pnpm
: https://pnpm.io/installation.
- Create a free GitHub OAuth App at https://github.com/settings/developers
- Clone the repo
git clone https://github.com/cyanChill/RepoSift.git
- Then install the dependencies by running
pnpm i
. - Create an
.env
file, populated with the values specified in the.env.example
file.
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
.
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).
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
).
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 dopnpm start
to run off that build. - A suggestion for hosting this front-end application is Vercel.
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.
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.
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.
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!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.