A platform to discover and contribute to open source projects created by Yemeni developers.
You can view a live demo of the platform here: Yemeni Open Source
graph TD
A[User] -->|Visits| B(Home Page)
B --> C{Language Selection}
C -->|Arabic| D[Arabic UI]
C -->|English| E[English UI]
D --> F[Project List]
E --> F
F --> G[Project Details]
G --> H[Contributors]
H --> I[Contributor Profiles]
F --> J[Search/Filter]
J --> K[Filtered Results]
- π Multilingual support (Arabic/English)
- π Interactive contribution graphs
- π Advanced search and filtering
- π₯ Contributor statistics and timelines
- π Real-time GitHub API synchronization
- π¨ Responsive design with theme support
- Node.js 18+
- npm 9+
git clone https://github.com/YacoubAl-hardari/yos-app.git
cd yos-app
npm install --legacy-peer-deps
npm run dev
graph LR
Root["yacoubal-hardari-yos-app/"]
Root --> README["README.md"]
Root --> ConfigFiles["Config Files"]
Root --> App
Root --> Components
Root --> Lib
Root --> Public
ConfigFiles --> ComponentsJSON["components.json"]
ConfigFiles --> NextConfig["next.config.mjs"]
ConfigFiles --> PackageJSON["package.json"]
ConfigFiles --> PostCSS["postcss.config.mjs"]
ConfigFiles --> Tailwind["tailwind.config.ts"]
ConfigFiles --> TSConfig["tsconfig.json"]
ConfigFiles --> ESLint[".eslintrc.json"]
App --> Globals["globals.css"]
App --> Layout["layout.tsx"]
App --> Loading["loading.tsx"]
App --> Page["page.tsx"]
App --> About["about/"]
About --> AboutPage["page.tsx"]
App --> Fonts["fonts/"]
Fonts --> Font1["ArbFONTS-ArbFONTS-Janna-LT-Bold.ttf"]
Fonts --> Font2["ArbFONTS-ArbFONTS-Janna-LT-Regular.ttf"]
Fonts --> Font3["ArbFONTS-JannaLT-Regular.ttf"]
App --> Projects["projects/"]
Projects --> ProjectID["[id]/"]
ProjectID --> ProjectPage["page.tsx"]
ProjectID --> Contributors["contributors/"]
Contributors --> ContributorsPage["page.tsx"]
Components --> AboutHero["about-hero.tsx"]
Components --> ActivityTimeline["activity-timeline.tsx"]
Components --> ContributionGraph["contribution-graph.tsx"]
Components --> ContributorCard["contributor-card.tsx"]
Components --> ContributorsChart["contributors-chart.tsx"]
Components --> ContributorsHero["contributors-hero.tsx"]
Components --> ContributorsStatistics["contributors-statistics.tsx"]
Components --> ContributorsTimeline["contributors-timeline.tsx"]
Components --> HeroBackground["hero-background.tsx"]
Components --> HeroSection["hero-section.tsx"]
Components --> Markdown["markdown.tsx"]
Components --> Navbar["navbar.tsx"]
Components --> PageTransition["page-transition.tsx"]
Components --> ProjectBanner["project-banner.tsx"]
Components --> ProjectCard["project-card.tsx"]
Components --> ProjectsList["projects-list.tsx"]
Components --> ProjectsLoading["projects-loading.tsx"]
Components --> SearchFilters["search-filters.tsx"]
Components --> Skeleton["skeleton.tsx"]
Components --> SocialLinks["social-links.tsx"]
Components --> ThemeProvider["theme-provider.tsx"]
Components --> UI["ui/"]
UI --> Avatar["avatar.tsx"]
UI --> Badge["badge.tsx"]
UI --> Button["button.tsx"]
UI --> Card["card.tsx"]
UI --> Dropdown["dropdown-menu.tsx"]
UI --> Input["input.tsx"]
UI --> Select["select.tsx"]
UI --> Sheet["sheet.tsx"]
UI --> UITabs["tabs.tsx"]
UI --> Tooltip["tooltip.tsx"]
Lib --> GitHubService["github-service.ts"]
Lib --> LanguageContext["language-context.tsx"]
Lib --> Types["types.ts"]
Lib --> Utils["utils.ts"]
Public --> Images["images/"]
sequenceDiagram
participant User
participant UI
participant API
participant GitHub
User->>UI: Access Home Page
UI->>API: Fetch Projects
API->>GitHub: Get Repositories
GitHub-->>API: Return Repo Data
API-->>UI: Display Projects
User->>UI: Select Project
UI->>API: Get Project Details
API->>GitHub: Fetch Repo Info
GitHub-->>API: Return Details
API-->>UI: Show Project Page
User->>UI: View Contributors
UI->>API: Request Contributors
API->>GitHub: Get Contributors
GitHub-->>API: Contributor Data
API-->>UI: Display Contributors
graph LR
A[π Client] -->|1οΈβ£ Request Projects| B[β‘ Next.js API]
B -->|2οΈβ£ Check Cache| C[(ποΈ Local Cache)]
C --|β
Cache Hit|--> B
C --|β Cache Miss|--> D[π GitHub API]
D --|3οΈβ£ Fetch Data|--> B
B --|4οΈβ£ Transform & Standardize|--> E[π Standardized Format]
E --|5οΈβ£ Store in Cache & Return|--> A
A --|6οΈβ£ Request Project Details|--> F[π Project Page]
F --|7οΈβ£ Fetch README|--> D
F --|8οΈβ£ Get Contributors|--> D
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS
- GitHub API
- Shadcn UI
- Recharts
- Framer Motion
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request