|
1 | 1 | # OpenIssue.dev |
2 | 2 |
|
3 | | -> Discover open-source contribution opportunities by technology, not by endless searching. |
| 3 | +[OpenIssue.dev](https://openissue-dev.vercel.app/) helps developers find active, contributor-friendly GitHub issues by technology. |
4 | 4 |
|
5 | | -OpenIssue.dev helps developers find active GitHub issues that are actually looking for contributors. Search by technology stack, filter contributor-friendly labels, and quickly identify issues that match your skills. |
| 5 | +## What it does |
6 | 6 |
|
7 | | -Whether you're making your first open-source contribution or looking for a new project to contribute to, OpenIssue.dev makes issue discovery simple and efficient. |
| 7 | +- Searches live GitHub issues by language or ecosystem topic |
| 8 | +- Filters by contributor-friendly label, linked pull requests, and Hacktoberfest readiness |
| 9 | +- Sorts and ranks results using activity, repository, assignment, and discussion signals |
| 10 | +- Supports reusable saved searches without requiring an account |
| 11 | +- Adds GitHub sign-in for cloud-backed saved searches that survive cleared browser storage |
| 12 | +- Provides light, dark, and system themes with a responsive interface |
8 | 13 |
|
9 | | ---- |
| 14 | +## Quick start |
10 | 15 |
|
11 | | -## ✨ Features |
| 16 | +Requirements: Node.js 22+, npm, a GitHub token, and a Turso database. |
12 | 17 |
|
13 | | -### 🔍 Search by Technology |
| 18 | +```bash |
| 19 | +npm install |
| 20 | +cp .env.example .env.local |
| 21 | +npm run dev |
| 22 | +``` |
14 | 23 |
|
15 | | -Find issues related to: |
| 24 | +Open [http://localhost:3000](http://localhost:3000). GitHub OAuth and database persistence require the additional configuration described in [Setup and deployment](doc/setup.md). |
16 | 25 |
|
17 | | -* Java |
18 | | -* Spring Boot |
19 | | -* React |
20 | | -* Angular |
21 | | -* Vue |
22 | | -* Python |
23 | | -* Django |
24 | | -* FastAPI |
25 | | -* Go |
26 | | -* Rust |
27 | | -* Kubernetes |
28 | | -* Docker |
29 | | -* Terraform |
30 | | -* AWS |
31 | | -* Azure |
32 | | -* GCP |
33 | | -* And many more... |
| 26 | +## Low-level design |
34 | 27 |
|
35 | | -### 🏷️ Contributor-Friendly Labels |
| 28 | +```mermaid |
| 29 | +flowchart LR |
| 30 | + UI[Issue Finder UI] --> SearchRoute["GET /api/search"] |
| 31 | + SearchRoute --> SearchService[Search and ranking] |
| 32 | + SearchService <--> GitHubAPI[GitHub APIs] |
| 33 | + SearchService --> UI |
36 | 34 |
|
37 | | -Discover issues tagged with: |
| 35 | + UI <--> Local[(Local storage)] |
| 36 | + UI --> AuthRoute["/api/auth/*"] |
| 37 | + AuthRoute --> BetterAuth[Better Auth] |
| 38 | + BetterAuth <--> GitHubOAuth[GitHub OAuth] |
38 | 39 |
|
39 | | -* `help wanted` |
40 | | -* `good first issue` |
41 | | -* `up-for-grabs` |
42 | | -* `first-timers-only` |
43 | | -* `documentation` |
44 | | -* `bug` |
45 | | -* `enhancement` |
| 40 | + Local --> SyncClient[Saved-search sync] |
| 41 | + SyncClient --> SavedRoute["/api/saved-searches"] |
| 42 | + SavedRoute --> BetterAuth |
| 43 | + SavedRoute --> Drizzle[Drizzle ORM] |
| 44 | + BetterAuth --> Drizzle |
| 45 | + Drizzle <--> Turso[(Turso / libSQL)] |
| 46 | +``` |
46 | 47 |
|
47 | | -### 📊 Smart Filtering |
| 48 | +See [Architecture and data flow](doc/architecture.md) for the expanded request flows, persistence model, and component relationships. |
48 | 49 |
|
49 | | -Filter results by: |
| 50 | +## Documentation |
50 | 51 |
|
51 | | -* Technology |
52 | | -* Labels |
53 | | -* Repository popularity |
54 | | -* Last updated date |
55 | | -* Number of comments |
56 | | -* Issue activity |
| 52 | +- [Setup and deployment](doc/setup.md) |
| 53 | +- [Architecture and data flow](doc/architecture.md) |
| 54 | +- [Development and contributing](doc/contributing.md) |
57 | 55 |
|
58 | | -### ⚡ Fast & Lightweight |
| 56 | +## Tech stack |
59 | 57 |
|
60 | | -* Serverless architecture |
61 | | -* Powered by GitHub APIs |
62 | | -* No installation required |
63 | | -* Optimized for Vercel deployment |
| 58 | +Next.js 16, React 19, TypeScript, Tailwind CSS, Better Auth, Drizzle ORM, Turso/libSQL, GitHub APIs, Vitest, Vercel, and SonarQube Cloud. |
64 | 59 |
|
65 | | ---- |
| 60 | +## License |
66 | 61 |
|
67 | | -## 🎯 Why OpenIssue.dev? |
68 | | - |
69 | | -Finding a suitable open-source issue can be frustrating: |
70 | | - |
71 | | -* Thousands of repositories |
72 | | -* Inconsistent labels |
73 | | -* Outdated issue lists |
74 | | -* Endless GitHub searches |
75 | | - |
76 | | -OpenIssue.dev brings contributor-friendly issues into one place and helps developers focus on contributing instead of searching. |
77 | | - |
78 | | ---- |
79 | | - |
80 | | -## 🚀 Use Cases |
81 | | - |
82 | | -### First-Time Contributors |
83 | | - |
84 | | -Find beginner-friendly issues and start contributing to open source with confidence. |
85 | | - |
86 | | -### Experienced Developers |
87 | | - |
88 | | -Discover challenging issues in technologies already used professionally. |
89 | | - |
90 | | -### Students |
91 | | - |
92 | | -Build real-world experience by contributing to active projects. |
93 | | - |
94 | | -### Open Source Enthusiasts |
95 | | - |
96 | | -Explore projects across multiple ecosystems and communities. |
97 | | - |
98 | | ---- |
99 | | - |
100 | | -## 🏗️ How It Works |
101 | | - |
102 | | -1. Select a technology stack. |
103 | | -2. Choose one or more contribution labels. |
104 | | -3. Browse active GitHub issues. |
105 | | -4. Open the issue directly on GitHub. |
106 | | -5. Start contributing. |
107 | | - |
108 | | ---- |
109 | | - |
110 | | -## 📈 Roadmap |
111 | | - |
112 | | -### MVP |
113 | | - |
114 | | -* [x] Technology-based issue discovery |
115 | | -* [x] Help Wanted filtering |
116 | | -* [x] Good First Issue filtering |
117 | | -* [x] GitHub issue links |
118 | | -* [x] Repository metadata |
119 | | - |
120 | | -### Future Enhancements |
121 | | - |
122 | | -* [ ] GitHub authentication |
123 | | -* [ ] Personalized recommendations |
124 | | -* [ ] Saved searches |
125 | | -* [ ] Email alerts |
126 | | -* [ ] Trending opportunities |
127 | | -* [ ] Repository health scoring |
128 | | -* [ ] Contribution history tracking |
129 | | -* [ ] Weekly digest |
130 | | - |
131 | | ---- |
132 | | - |
133 | | -## 🛠️ Tech Stack |
134 | | - |
135 | | -* Next.js |
136 | | -* React |
137 | | -* TypeScript |
138 | | -* Tailwind CSS |
139 | | -* GitHub Search API |
140 | | -* Vercel |
141 | | - |
142 | | ---- |
143 | | - |
144 | | -## 🤝 Contributing |
145 | | - |
146 | | -Contributions, feature requests, and bug reports are welcome. |
147 | | - |
148 | | -If you have ideas to make open-source discovery easier, feel free to open an issue or submit a pull request. |
149 | | - |
150 | | ---- |
151 | | - |
152 | | -## 🌟 Mission |
153 | | - |
154 | | -OpenIssue.dev exists to reduce the gap between developers who want to contribute and open-source projects that need help. |
155 | | - |
156 | | -**Less searching. More contributing.** 🚀 |
157 | | - |
158 | | ---- |
159 | | - |
160 | | -## 📄 License |
161 | | - |
162 | | -Apache 2.0 License. |
| 62 | +Licensed under the [Apache License 2.0](LICENSE). |
0 commit comments