├── .env.development
├── .env.example
├── .env.production
├── .gitignore
├── README.md
├── github-info.png
├── jsconfig.json
├── next.config.js
├── package.json
├── pnpm-lock.yaml
├── public
├── favicon.ico
├── next.svg
├── thirteen.svg
└── vercel.svg
└── src
├── assets
├── GitHubInsight__Logo.png
├── block-chart.png
├── chart.png
├── github.svg
├── green-ok.png
└── ok-down.png
├── components
├── common
│ └── Loading.js
├── follow
│ ├── FollowItem.js
│ ├── followerCard.js
│ ├── followersDiv.js
│ ├── followingCard.js
│ ├── index.js
│ ├── loading.js
│ ├── noUserMessage.js
│ ├── nonFollowers.js
│ └── style.module.scss
├── fusioncharts
│ ├── FusionChart.js
│ └── styles.module.scss
├── search
│ ├── index.js
│ └── styles.module.scss
├── stats
│ ├── StatsCard.js
│ ├── StatsCartdtem.js
│ └── styles.module.scss
├── table
│ ├── table-mobile.js
│ ├── table-mobile.module.scss
│ ├── table.js
│ └── table.module.scss
├── title
│ ├── styles.module.scss
│ └── title.js
└── userCard
│ ├── index.js
│ └── styles.module.scss
├── container
├── dashboard
│ ├── followerCardContainer
│ │ └── index.js
│ ├── index.js
│ └── styles.module.scss
├── home
│ ├── about
│ │ ├── index.js
│ │ └── styles.module.scss
│ ├── feature
│ │ ├── index.js
│ │ └── styles.module.scss
│ ├── hero
│ │ ├── index.js
│ │ └── styles.module.scss
│ ├── index.js
│ └── styles.module.scss
├── nonFollowers
│ ├── container
│ │ └── Follower.js
│ ├── index.js
│ └── nonFollowers.module.scss
├── rate
│ └── index.js
└── repos
│ └── index.js
├── data
├── fusion-configs.js
└── stats-card-item-data.js
├── helper
├── findLanguageData.js
├── getAllData.js
└── sortData.js
├── icons
└── index.js
├── layout
├── footer
│ ├── index.js
│ └── styles.module.scss
├── header
│ ├── hamburgerBox.js
│ ├── index.js
│ ├── logo.js
│ ├── mobileMenu.js
│ ├── navigation.js
│ ├── sidebarLeft.js
│ ├── sidebarRight.js
│ └── styles.module.scss
└── info
│ ├── index.js
│ └── styles.module.scss
├── pages
├── _app.js
├── _document.js
├── api
│ ├── followers.js
│ ├── following.js
│ └── repos.js
├── dashboard.js
├── index.js
├── non-followers.js
├── rate.js
└── repos.js
├── redux
├── store.js
├── theme.js
└── usersSlice.js
├── services
├── rate.js
└── users.js
└── styles
├── _reset.scss
├── _variables.scss
└── globals.scss
/.env.development:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_API=https://api.github.com/
2 |
3 | NEXT_PUBLIC_FOLLOWERS_PER_PAGE=100
4 | NEXT_PUBLIC_FOLLOWING_PER_PAGE=100
5 | NEXT_PUBLIC_REPOS_PER_PAGE=100
6 |
7 | NEXT_PUBLIC_MOCK_API=http://localhost:3000/api
8 |
9 |
10 | NEXT_PUBLIC_PROJECT_GITHUB_URL=https://github.com/yasinelbuz/github-insight
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_API=
2 |
3 | NEXT_PUBLIC_FOLLOWERS_PER_PAGE=
4 | NEXT_PUBLIC_FOLLOWING_PER_PAGE=
5 | NEXT_PUBLIC_REPOS_PER_PAGE=
6 |
7 | NEXT_PUBLIC_MOCK_API=
8 |
9 |
10 | NEXT_PUBLIC_PROJECT_GITHUB_URL=
--------------------------------------------------------------------------------
/.env.production:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_API=https://api.github.com/
2 |
3 | NEXT_PUBLIC_FOLLOWERS_PER_PAGE=100
4 | NEXT_PUBLIC_FOLLOWING_PER_PAGE=100
5 | NEXT_PUBLIC_REPOS_PER_PAGE=100
6 |
7 | NEXT_PUBLIC_MOCK_API=http://localhost:3000/api
8 |
9 |
10 | NEXT_PUBLIC_PROJECT_GITHUB_URL=https://github.com/yasinelbuz/github-insight
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env
30 | .env.development
31 | .env.production
32 | .env.local
33 | .env.development.local
34 | .env.test.local
35 | .env.production.local
36 |
37 |
38 | # vercel
39 | .vercel
40 |
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Github Insight
2 |
3 | _"Github Insight”_
4 |
5 | They can view their profile information, number of followers and followed users, public and private projects, repo names, star ratings, and recent activity on GitHub.
6 |
7 | - [Demo](#demo)
8 | - [Installation](#installation)
9 | - [Starting project](#starting-project)
10 | - [Links](#links)
11 | - [Contact](#contact)
12 |
13 | ## Demo
14 |
15 | ## 
16 |
17 | ## Installation
18 |
19 | ```bash
20 | ** open terminal
21 | git clone https://github.com/yasinelbuz/github-info.git
22 |
23 | ** then
24 | ** install packages
25 | pnpm install
26 | ```
27 |
28 | ## Starting project
29 |
30 | ```bash
31 | pnpm run dev
32 |
33 | ** open web page
34 | http://localhost:3000
35 | ```
36 |
37 | ## Links
38 |
39 | - [Github](https://github.com/yasinelbuz/github-insight)
40 | - [Deployment](https://githubinsight.vercel.app/)
41 |
42 | ## Contact
43 |
44 | You can contact me at yasinelbuz@gmail.com
45 |
--------------------------------------------------------------------------------
/github-info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/github-info.png
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./src/*"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: false,
4 | }
5 |
6 | module.exports = nextConfig
7 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "github-info",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@react-hook/media-query": "^1.1.1",
13 | "@reduxjs/toolkit": "^1.9.3",
14 | "fusioncharts": "^3.19.0",
15 | "next": "13.2.4",
16 | "react": "18.2.0",
17 | "react-dom": "18.2.0",
18 | "react-fusioncharts": "^4.0.0",
19 | "react-hook": "^0.0.1",
20 | "react-icons": "^4.8.0",
21 | "react-redux": "^8.0.5",
22 | "sass": "^1.59.3"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | specifiers:
4 | '@react-hook/media-query': ^1.1.1
5 | '@reduxjs/toolkit': ^1.9.3
6 | fusioncharts: ^3.19.0
7 | next: 13.2.4
8 | react: 18.2.0
9 | react-dom: 18.2.0
10 | react-fusioncharts: ^4.0.0
11 | react-hook: ^0.0.1
12 | react-icons: ^4.8.0
13 | react-redux: ^8.0.5
14 | sass: ^1.59.3
15 |
16 | dependencies:
17 | '@react-hook/media-query': 1.1.1_react@18.2.0
18 | '@reduxjs/toolkit': 1.9.3_k4ae6lp43ej6mezo3ztvx6pykq
19 | fusioncharts: 3.20.0
20 | next: 13.2.4_dpxg4zawgzznnxdt7it3f5d76m
21 | react: 18.2.0
22 | react-dom: 18.2.0_react@18.2.0
23 | react-fusioncharts: 4.0.0_react@18.2.0
24 | react-hook: 0.0.1
25 | react-icons: 4.8.0_react@18.2.0
26 | react-redux: 8.0.5_biqbaboplfbrettd7655fr4n2y
27 | sass: 1.59.3
28 |
29 | packages:
30 |
31 | /@babel/runtime/7.21.0:
32 | resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==}
33 | engines: {node: '>=6.9.0'}
34 | dependencies:
35 | regenerator-runtime: 0.13.11
36 | dev: false
37 |
38 | /@fusioncharts/accessibility/1.7.0:
39 | resolution: {integrity: sha512-CtRzac90AMP+JJSSMgICwsIRw2W20fQ8YXpCKd8cmrglXlVThRgHqlcQCUHx5/3Dbzg6KXkA57ZiICVBXWudKg==}
40 | dev: false
41 |
42 | /@fusioncharts/charts/3.20.0:
43 | resolution: {integrity: sha512-1yCQ6hroXYn/UPsguw8yUxrTKoBdP/n4whAN66msPnBmoeCY0cFt86Y33fMZVHpB8iVbg06OYxk0JJeuNQODWg==}
44 | dependencies:
45 | '@babel/runtime': 7.21.0
46 | '@fusioncharts/core': 1.7.0
47 | '@fusioncharts/features': 1.7.0
48 | '@fusioncharts/utils': 1.7.0
49 | dev: false
50 |
51 | /@fusioncharts/constructor/1.7.0:
52 | resolution: {integrity: sha512-RQJylJGIDwvzkLI4ouM6lRuNqrdwT6I6Dn7denvEkReAQ3bZgfF14DxiexdeJyZGF5YQhsvQwRa/VJDghPvm5w==}
53 | dependencies:
54 | '@babel/runtime': 7.21.0
55 | '@fusioncharts/core': 1.7.0
56 | '@fusioncharts/maps': 3.20.0
57 | dev: false
58 |
59 | /@fusioncharts/core/1.7.0:
60 | resolution: {integrity: sha512-pxf/LY7OG8eP/UhFB4XS0E7XFFsKTwL90j9K0XFDtzmPVx8JLR30s2azv6co4A60nHeg5fZQ6i2Dp0M/Vq7Uaw==}
61 | dependencies:
62 | '@babel/runtime': 7.21.0
63 | '@fusioncharts/utils': 1.7.0
64 | core-js: 3.29.1
65 | ramda: 0.25.0
66 | dev: false
67 |
68 | /@fusioncharts/datatable/1.7.0:
69 | resolution: {integrity: sha512-MaAiRKEEzj7rG7iRBBNCxn3e4msAIwuBezgnVyCczUWb/NrXKJVPzXPr5bqgLpmW7dpso3Q+7zfd+4ZWs4VBWg==}
70 | dependencies:
71 | '@babel/runtime': 7.21.0
72 | '@fusioncharts/utils': 1.7.0
73 | dev: false
74 |
75 | /@fusioncharts/features/1.7.0:
76 | resolution: {integrity: sha512-kuU8nuVUPVd/xlHZp0USnf7AL1gHyQRj7ld99STRoH632vTo19qGjqHOzH38hOFfZNrTP9nnPg7eIjxC5+qXZw==}
77 | dependencies:
78 | '@babel/runtime': 7.21.0
79 | '@fusioncharts/core': 1.7.0
80 | '@fusioncharts/utils': 1.7.0
81 | jspdf: 2.5.1
82 | dev: false
83 |
84 | /@fusioncharts/fusiontime/2.8.0:
85 | resolution: {integrity: sha512-RfT/AJgQVrZ1GPbEKQDWIObesF/U6xbf9OoabPa4fpZGpgC37OSzSxCDGWOUC58YLKIQ9TIA8cV7vnUDLFi1NA==}
86 | dependencies:
87 | '@babel/runtime': 7.21.0
88 | '@fusioncharts/charts': 3.20.0
89 | '@fusioncharts/core': 1.7.0
90 | '@fusioncharts/datatable': 1.7.0
91 | '@fusioncharts/utils': 1.7.0
92 | ramda: 0.25.0
93 | dev: false
94 |
95 | /@fusioncharts/maps/3.20.0:
96 | resolution: {integrity: sha512-oHz36nYhxR2wJDSoL0LNOH1a4tQ959tLTCPQ1POqjxVscs/F/J/KTQp7CeuoDpBR7lMH4k/XZCVxeeklSrmjEA==}
97 | dependencies:
98 | '@babel/runtime': 7.21.0
99 | '@fusioncharts/charts': 3.20.0
100 | '@fusioncharts/core': 1.7.0
101 | '@fusioncharts/features': 1.7.0
102 | dev: false
103 |
104 | /@fusioncharts/powercharts/3.20.0:
105 | resolution: {integrity: sha512-wNABGvKv1u6a6MNOZWWyuGOQlsRrDKEMFwSUX+yvw3cJ4s3HfBeyXGBP73eJ2T4dcpzxdKdsJU2WdZIbOYeQQw==}
106 | dependencies:
107 | '@babel/runtime': 7.21.0
108 | '@fusioncharts/charts': 3.20.0
109 | '@fusioncharts/core': 1.7.0
110 | '@fusioncharts/utils': 1.7.0
111 | dev: false
112 |
113 | /@fusioncharts/utils/1.7.0:
114 | resolution: {integrity: sha512-GFaQAdGvLtI73T3jtFYoowi2UCQrt86cd8xz/JhrmPgE+BYotiJFGxBJNNilBIjAbRRVbL8bbgSwDNmpXjPkow==}
115 | dependencies:
116 | '@babel/runtime': 7.21.0
117 | ramda: 0.25.0
118 | dev: false
119 |
120 | /@fusioncharts/widgets/3.20.0:
121 | resolution: {integrity: sha512-xEKJ6EJRbdScXPbD3hVU4FLgzXl0FvKs25g/6LP+m4QYHsBdHyEsGTQM5UYALvYRIqfvj69spnmU3qN+7nsw6Q==}
122 | dependencies:
123 | '@babel/runtime': 7.21.0
124 | '@fusioncharts/charts': 3.20.0
125 | '@fusioncharts/constructor': 1.7.0
126 | '@fusioncharts/core': 1.7.0
127 | '@fusioncharts/features': 1.7.0
128 | '@fusioncharts/utils': 1.7.0
129 | dev: false
130 |
131 | /@next/env/13.2.4:
132 | resolution: {integrity: sha512-+Mq3TtpkeeKFZanPturjcXt+KHfKYnLlX6jMLyCrmpq6OOs4i1GqBOAauSkii9QeKCMTYzGppar21JU57b/GEA==}
133 | dev: false
134 |
135 | /@next/swc-android-arm-eabi/13.2.4:
136 | resolution: {integrity: sha512-DWlalTSkLjDU11MY11jg17O1gGQzpRccM9Oes2yTqj2DpHndajrXHGxj9HGtJ+idq2k7ImUdJVWS2h2l/EDJOw==}
137 | engines: {node: '>= 10'}
138 | cpu: [arm]
139 | os: [android]
140 | requiresBuild: true
141 | dev: false
142 | optional: true
143 |
144 | /@next/swc-android-arm64/13.2.4:
145 | resolution: {integrity: sha512-sRavmUImUCf332Gy+PjIfLkMhiRX1Ez4SI+3vFDRs1N5eXp+uNzjFUK/oLMMOzk6KFSkbiK/3Wt8+dHQR/flNg==}
146 | engines: {node: '>= 10'}
147 | cpu: [arm64]
148 | os: [android]
149 | requiresBuild: true
150 | dev: false
151 | optional: true
152 |
153 | /@next/swc-darwin-arm64/13.2.4:
154 | resolution: {integrity: sha512-S6vBl+OrInP47TM3LlYx65betocKUUlTZDDKzTiRDbsRESeyIkBtZ6Qi5uT2zQs4imqllJznVjFd1bXLx3Aa6A==}
155 | engines: {node: '>= 10'}
156 | cpu: [arm64]
157 | os: [darwin]
158 | requiresBuild: true
159 | dev: false
160 | optional: true
161 |
162 | /@next/swc-darwin-x64/13.2.4:
163 | resolution: {integrity: sha512-a6LBuoYGcFOPGd4o8TPo7wmv5FnMr+Prz+vYHopEDuhDoMSHOnC+v+Ab4D7F0NMZkvQjEJQdJS3rqgFhlZmKlw==}
164 | engines: {node: '>= 10'}
165 | cpu: [x64]
166 | os: [darwin]
167 | requiresBuild: true
168 | dev: false
169 | optional: true
170 |
171 | /@next/swc-freebsd-x64/13.2.4:
172 | resolution: {integrity: sha512-kkbzKVZGPaXRBPisoAQkh3xh22r+TD+5HwoC5bOkALraJ0dsOQgSMAvzMXKsN3tMzJUPS0tjtRf1cTzrQ0I5vQ==}
173 | engines: {node: '>= 10'}
174 | cpu: [x64]
175 | os: [freebsd]
176 | requiresBuild: true
177 | dev: false
178 | optional: true
179 |
180 | /@next/swc-linux-arm-gnueabihf/13.2.4:
181 | resolution: {integrity: sha512-7qA1++UY0fjprqtjBZaOA6cas/7GekpjVsZn/0uHvquuITFCdKGFCsKNBx3S0Rpxmx6WYo0GcmhNRM9ru08BGg==}
182 | engines: {node: '>= 10'}
183 | cpu: [arm]
184 | os: [linux]
185 | requiresBuild: true
186 | dev: false
187 | optional: true
188 |
189 | /@next/swc-linux-arm64-gnu/13.2.4:
190 | resolution: {integrity: sha512-xzYZdAeq883MwXgcwc72hqo/F/dwUxCukpDOkx/j1HTq/J0wJthMGjinN9wH5bPR98Mfeh1MZJ91WWPnZOedOg==}
191 | engines: {node: '>= 10'}
192 | cpu: [arm64]
193 | os: [linux]
194 | requiresBuild: true
195 | dev: false
196 | optional: true
197 |
198 | /@next/swc-linux-arm64-musl/13.2.4:
199 | resolution: {integrity: sha512-8rXr3WfmqSiYkb71qzuDP6I6R2T2tpkmf83elDN8z783N9nvTJf2E7eLx86wu2OJCi4T05nuxCsh4IOU3LQ5xw==}
200 | engines: {node: '>= 10'}
201 | cpu: [arm64]
202 | os: [linux]
203 | requiresBuild: true
204 | dev: false
205 | optional: true
206 |
207 | /@next/swc-linux-x64-gnu/13.2.4:
208 | resolution: {integrity: sha512-Ngxh51zGSlYJ4EfpKG4LI6WfquulNdtmHg1yuOYlaAr33KyPJp4HeN/tivBnAHcZkoNy0hh/SbwDyCnz5PFJQQ==}
209 | engines: {node: '>= 10'}
210 | cpu: [x64]
211 | os: [linux]
212 | requiresBuild: true
213 | dev: false
214 | optional: true
215 |
216 | /@next/swc-linux-x64-musl/13.2.4:
217 | resolution: {integrity: sha512-gOvwIYoSxd+j14LOcvJr+ekd9fwYT1RyMAHOp7znA10+l40wkFiMONPLWiZuHxfRk+Dy7YdNdDh3ImumvL6VwA==}
218 | engines: {node: '>= 10'}
219 | cpu: [x64]
220 | os: [linux]
221 | requiresBuild: true
222 | dev: false
223 | optional: true
224 |
225 | /@next/swc-win32-arm64-msvc/13.2.4:
226 | resolution: {integrity: sha512-q3NJzcfClgBm4HvdcnoEncmztxrA5GXqKeiZ/hADvC56pwNALt3ngDC6t6qr1YW9V/EPDxCYeaX4zYxHciW4Dw==}
227 | engines: {node: '>= 10'}
228 | cpu: [arm64]
229 | os: [win32]
230 | requiresBuild: true
231 | dev: false
232 | optional: true
233 |
234 | /@next/swc-win32-ia32-msvc/13.2.4:
235 | resolution: {integrity: sha512-/eZ5ncmHUYtD2fc6EUmAIZlAJnVT2YmxDsKs1Ourx0ttTtvtma/WKlMV5NoUsyOez0f9ExLyOpeCoz5aj+MPXw==}
236 | engines: {node: '>= 10'}
237 | cpu: [ia32]
238 | os: [win32]
239 | requiresBuild: true
240 | dev: false
241 | optional: true
242 |
243 | /@next/swc-win32-x64-msvc/13.2.4:
244 | resolution: {integrity: sha512-0MffFmyv7tBLlji01qc0IaPP/LVExzvj7/R5x1Jph1bTAIj4Vu81yFQWHHQAP6r4ff9Ukj1mBK6MDNVXm7Tcvw==}
245 | engines: {node: '>= 10'}
246 | cpu: [x64]
247 | os: [win32]
248 | requiresBuild: true
249 | dev: false
250 | optional: true
251 |
252 | /@react-hook/media-query/1.1.1_react@18.2.0:
253 | resolution: {integrity: sha512-VM14wDOX5CW5Dn6b2lTiMd79BFMTut9AZj2+vIRT3LCKgMCYmdqruTtzDPSnIVDQdtxdPgtOzvU9oK20LopuOw==}
254 | peerDependencies:
255 | react: '>=16.8'
256 | dependencies:
257 | react: 18.2.0
258 | dev: false
259 |
260 | /@reduxjs/toolkit/1.9.3_k4ae6lp43ej6mezo3ztvx6pykq:
261 | resolution: {integrity: sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==}
262 | peerDependencies:
263 | react: ^16.9.0 || ^17.0.0 || ^18
264 | react-redux: ^7.2.1 || ^8.0.2
265 | peerDependenciesMeta:
266 | react:
267 | optional: true
268 | react-redux:
269 | optional: true
270 | dependencies:
271 | immer: 9.0.19
272 | react: 18.2.0
273 | react-redux: 8.0.5_biqbaboplfbrettd7655fr4n2y
274 | redux: 4.2.1
275 | redux-thunk: 2.4.2_redux@4.2.1
276 | reselect: 4.1.7
277 | dev: false
278 |
279 | /@swc/helpers/0.4.14:
280 | resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
281 | dependencies:
282 | tslib: 2.5.0
283 | dev: false
284 |
285 | /@types/hoist-non-react-statics/3.3.1:
286 | resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
287 | dependencies:
288 | '@types/react': 18.0.28
289 | hoist-non-react-statics: 3.3.2
290 | dev: false
291 |
292 | /@types/prop-types/15.7.5:
293 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
294 | dev: false
295 |
296 | /@types/raf/3.4.0:
297 | resolution: {integrity: sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==}
298 | dev: false
299 | optional: true
300 |
301 | /@types/react/18.0.28:
302 | resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==}
303 | dependencies:
304 | '@types/prop-types': 15.7.5
305 | '@types/scheduler': 0.16.2
306 | csstype: 3.1.1
307 | dev: false
308 |
309 | /@types/scheduler/0.16.2:
310 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
311 | dev: false
312 |
313 | /@types/use-sync-external-store/0.0.3:
314 | resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==}
315 | dev: false
316 |
317 | /anymatch/3.1.3:
318 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
319 | engines: {node: '>= 8'}
320 | dependencies:
321 | normalize-path: 3.0.0
322 | picomatch: 2.3.1
323 | dev: false
324 |
325 | /atob/2.1.2:
326 | resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
327 | engines: {node: '>= 4.5.0'}
328 | hasBin: true
329 | dev: false
330 |
331 | /base64-arraybuffer/1.0.2:
332 | resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
333 | engines: {node: '>= 0.6.0'}
334 | dev: false
335 | optional: true
336 |
337 | /binary-extensions/2.2.0:
338 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
339 | engines: {node: '>=8'}
340 | dev: false
341 |
342 | /braces/3.0.2:
343 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
344 | engines: {node: '>=8'}
345 | dependencies:
346 | fill-range: 7.0.1
347 | dev: false
348 |
349 | /btoa/1.2.1:
350 | resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==}
351 | engines: {node: '>= 0.4.0'}
352 | hasBin: true
353 | dev: false
354 |
355 | /caniuse-lite/1.0.30001469:
356 | resolution: {integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==}
357 | dev: false
358 |
359 | /canvg/3.0.10:
360 | resolution: {integrity: sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==}
361 | engines: {node: '>=10.0.0'}
362 | requiresBuild: true
363 | dependencies:
364 | '@babel/runtime': 7.21.0
365 | '@types/raf': 3.4.0
366 | core-js: 3.29.1
367 | raf: 3.4.1
368 | regenerator-runtime: 0.13.11
369 | rgbcolor: 1.0.1
370 | stackblur-canvas: 2.5.0
371 | svg-pathdata: 6.0.3
372 | dev: false
373 | optional: true
374 |
375 | /chokidar/3.5.3:
376 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
377 | engines: {node: '>= 8.10.0'}
378 | dependencies:
379 | anymatch: 3.1.3
380 | braces: 3.0.2
381 | glob-parent: 5.1.2
382 | is-binary-path: 2.1.0
383 | is-glob: 4.0.3
384 | normalize-path: 3.0.0
385 | readdirp: 3.6.0
386 | optionalDependencies:
387 | fsevents: 2.3.2
388 | dev: false
389 |
390 | /client-only/0.0.1:
391 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
392 | dev: false
393 |
394 | /core-js/3.29.1:
395 | resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==}
396 | requiresBuild: true
397 | dev: false
398 |
399 | /css-line-break/2.1.0:
400 | resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
401 | dependencies:
402 | utrie: 1.0.2
403 | dev: false
404 | optional: true
405 |
406 | /csstype/3.1.1:
407 | resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
408 | dev: false
409 |
410 | /dompurify/2.4.5:
411 | resolution: {integrity: sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==}
412 | requiresBuild: true
413 | dev: false
414 | optional: true
415 |
416 | /fflate/0.4.8:
417 | resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==}
418 | dev: false
419 |
420 | /fill-range/7.0.1:
421 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
422 | engines: {node: '>=8'}
423 | dependencies:
424 | to-regex-range: 5.0.1
425 | dev: false
426 |
427 | /fsevents/2.3.2:
428 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
429 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
430 | os: [darwin]
431 | requiresBuild: true
432 | dev: false
433 | optional: true
434 |
435 | /fusioncharts/3.20.0:
436 | resolution: {integrity: sha512-etMdp8SeFBfRpecoZnCUkrsqu68SBJwUzTWmGu3+1lcMLFDjSnhYXCDuDfQvM+OxljBCNmEPGKA41fYRO8SdQA==}
437 | dependencies:
438 | '@babel/runtime': 7.21.0
439 | '@fusioncharts/accessibility': 1.7.0
440 | '@fusioncharts/charts': 3.20.0
441 | '@fusioncharts/constructor': 1.7.0
442 | '@fusioncharts/core': 1.7.0
443 | '@fusioncharts/datatable': 1.7.0
444 | '@fusioncharts/features': 1.7.0
445 | '@fusioncharts/fusiontime': 2.8.0
446 | '@fusioncharts/maps': 3.20.0
447 | '@fusioncharts/powercharts': 3.20.0
448 | '@fusioncharts/utils': 1.7.0
449 | '@fusioncharts/widgets': 3.20.0
450 | mutationobserver-shim: 0.3.7
451 | promise-polyfill: 8.3.0
452 | dev: false
453 |
454 | /glob-parent/5.1.2:
455 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
456 | engines: {node: '>= 6'}
457 | dependencies:
458 | is-glob: 4.0.3
459 | dev: false
460 |
461 | /hoist-non-react-statics/3.3.2:
462 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
463 | dependencies:
464 | react-is: 16.13.1
465 | dev: false
466 |
467 | /html2canvas/1.4.1:
468 | resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
469 | engines: {node: '>=8.0.0'}
470 | requiresBuild: true
471 | dependencies:
472 | css-line-break: 2.1.0
473 | text-segmentation: 1.0.3
474 | dev: false
475 | optional: true
476 |
477 | /immer/9.0.19:
478 | resolution: {integrity: sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==}
479 | dev: false
480 |
481 | /immutable/4.3.0:
482 | resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
483 | dev: false
484 |
485 | /is-binary-path/2.1.0:
486 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
487 | engines: {node: '>=8'}
488 | dependencies:
489 | binary-extensions: 2.2.0
490 | dev: false
491 |
492 | /is-extglob/2.1.1:
493 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
494 | engines: {node: '>=0.10.0'}
495 | dev: false
496 |
497 | /is-glob/4.0.3:
498 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
499 | engines: {node: '>=0.10.0'}
500 | dependencies:
501 | is-extglob: 2.1.1
502 | dev: false
503 |
504 | /is-number/7.0.0:
505 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
506 | engines: {node: '>=0.12.0'}
507 | dev: false
508 |
509 | /js-tokens/4.0.0:
510 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
511 | dev: false
512 |
513 | /jspdf/2.5.1:
514 | resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==}
515 | dependencies:
516 | '@babel/runtime': 7.21.0
517 | atob: 2.1.2
518 | btoa: 1.2.1
519 | fflate: 0.4.8
520 | optionalDependencies:
521 | canvg: 3.0.10
522 | core-js: 3.29.1
523 | dompurify: 2.4.5
524 | html2canvas: 1.4.1
525 | dev: false
526 |
527 | /loose-envify/1.4.0:
528 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
529 | hasBin: true
530 | dependencies:
531 | js-tokens: 4.0.0
532 | dev: false
533 |
534 | /mutationobserver-shim/0.3.7:
535 | resolution: {integrity: sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==}
536 | dev: false
537 |
538 | /nanoid/3.3.4:
539 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
540 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
541 | hasBin: true
542 | dev: false
543 |
544 | /next/13.2.4_dpxg4zawgzznnxdt7it3f5d76m:
545 | resolution: {integrity: sha512-g1I30317cThkEpvzfXujf0O4wtaQHtDCLhlivwlTJ885Ld+eOgcz7r3TGQzeU+cSRoNHtD8tsJgzxVdYojFssw==}
546 | engines: {node: '>=14.6.0'}
547 | hasBin: true
548 | peerDependencies:
549 | '@opentelemetry/api': ^1.4.0
550 | fibers: '>= 3.1.0'
551 | node-sass: ^6.0.0 || ^7.0.0
552 | react: ^18.2.0
553 | react-dom: ^18.2.0
554 | sass: ^1.3.0
555 | peerDependenciesMeta:
556 | '@opentelemetry/api':
557 | optional: true
558 | fibers:
559 | optional: true
560 | node-sass:
561 | optional: true
562 | sass:
563 | optional: true
564 | dependencies:
565 | '@next/env': 13.2.4
566 | '@swc/helpers': 0.4.14
567 | caniuse-lite: 1.0.30001469
568 | postcss: 8.4.14
569 | react: 18.2.0
570 | react-dom: 18.2.0_react@18.2.0
571 | sass: 1.59.3
572 | styled-jsx: 5.1.1_react@18.2.0
573 | optionalDependencies:
574 | '@next/swc-android-arm-eabi': 13.2.4
575 | '@next/swc-android-arm64': 13.2.4
576 | '@next/swc-darwin-arm64': 13.2.4
577 | '@next/swc-darwin-x64': 13.2.4
578 | '@next/swc-freebsd-x64': 13.2.4
579 | '@next/swc-linux-arm-gnueabihf': 13.2.4
580 | '@next/swc-linux-arm64-gnu': 13.2.4
581 | '@next/swc-linux-arm64-musl': 13.2.4
582 | '@next/swc-linux-x64-gnu': 13.2.4
583 | '@next/swc-linux-x64-musl': 13.2.4
584 | '@next/swc-win32-arm64-msvc': 13.2.4
585 | '@next/swc-win32-ia32-msvc': 13.2.4
586 | '@next/swc-win32-x64-msvc': 13.2.4
587 | transitivePeerDependencies:
588 | - '@babel/core'
589 | - babel-plugin-macros
590 | dev: false
591 |
592 | /normalize-path/3.0.0:
593 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
594 | engines: {node: '>=0.10.0'}
595 | dev: false
596 |
597 | /performance-now/2.1.0:
598 | resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
599 | dev: false
600 | optional: true
601 |
602 | /picocolors/1.0.0:
603 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
604 | dev: false
605 |
606 | /picomatch/2.3.1:
607 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
608 | engines: {node: '>=8.6'}
609 | dev: false
610 |
611 | /postcss/8.4.14:
612 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
613 | engines: {node: ^10 || ^12 || >=14}
614 | dependencies:
615 | nanoid: 3.3.4
616 | picocolors: 1.0.0
617 | source-map-js: 1.0.2
618 | dev: false
619 |
620 | /promise-polyfill/8.3.0:
621 | resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==}
622 | dev: false
623 |
624 | /raf/3.4.1:
625 | resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==}
626 | dependencies:
627 | performance-now: 2.1.0
628 | dev: false
629 | optional: true
630 |
631 | /ramda/0.25.0:
632 | resolution: {integrity: sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==}
633 | dev: false
634 |
635 | /react-dom/18.2.0_react@18.2.0:
636 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
637 | peerDependencies:
638 | react: ^18.2.0
639 | dependencies:
640 | loose-envify: 1.4.0
641 | react: 18.2.0
642 | scheduler: 0.23.0
643 | dev: false
644 |
645 | /react-fusioncharts/4.0.0_react@18.2.0:
646 | resolution: {integrity: sha512-XPYLfDZp4+UT6/jziFPZbdVbpS0g4kseZkEaB2/CnnB83vsFeBNISP96jjL3lV8SXC5CuWmanELtwqQ+G8mhEg==}
647 | peerDependencies:
648 | react: 0.14.0 - 18.x
649 | dependencies:
650 | react: 18.2.0
651 | uuid: 3.4.0
652 | dev: false
653 |
654 | /react-hook/0.0.1:
655 | resolution: {integrity: sha512-2/Guf88/dGyFgUT7QDtBJ1l7V5yqTcAHlNRIZNTu2xg0KkDjaiYZp79ah49NDaLMI/J7voWcKLU8wMONG4A/1g==}
656 | dev: false
657 |
658 | /react-icons/4.8.0_react@18.2.0:
659 | resolution: {integrity: sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==}
660 | peerDependencies:
661 | react: '*'
662 | dependencies:
663 | react: 18.2.0
664 | dev: false
665 |
666 | /react-is/16.13.1:
667 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
668 | dev: false
669 |
670 | /react-is/18.2.0:
671 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
672 | dev: false
673 |
674 | /react-redux/8.0.5_biqbaboplfbrettd7655fr4n2y:
675 | resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==}
676 | peerDependencies:
677 | '@types/react': ^16.8 || ^17.0 || ^18.0
678 | '@types/react-dom': ^16.8 || ^17.0 || ^18.0
679 | react: ^16.8 || ^17.0 || ^18.0
680 | react-dom: ^16.8 || ^17.0 || ^18.0
681 | react-native: '>=0.59'
682 | redux: ^4
683 | peerDependenciesMeta:
684 | '@types/react':
685 | optional: true
686 | '@types/react-dom':
687 | optional: true
688 | react-dom:
689 | optional: true
690 | react-native:
691 | optional: true
692 | redux:
693 | optional: true
694 | dependencies:
695 | '@babel/runtime': 7.21.0
696 | '@types/hoist-non-react-statics': 3.3.1
697 | '@types/use-sync-external-store': 0.0.3
698 | hoist-non-react-statics: 3.3.2
699 | react: 18.2.0
700 | react-dom: 18.2.0_react@18.2.0
701 | react-is: 18.2.0
702 | use-sync-external-store: 1.2.0_react@18.2.0
703 | dev: false
704 |
705 | /react/18.2.0:
706 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
707 | engines: {node: '>=0.10.0'}
708 | dependencies:
709 | loose-envify: 1.4.0
710 | dev: false
711 |
712 | /readdirp/3.6.0:
713 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
714 | engines: {node: '>=8.10.0'}
715 | dependencies:
716 | picomatch: 2.3.1
717 | dev: false
718 |
719 | /redux-thunk/2.4.2_redux@4.2.1:
720 | resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==}
721 | peerDependencies:
722 | redux: ^4
723 | dependencies:
724 | redux: 4.2.1
725 | dev: false
726 |
727 | /redux/4.2.1:
728 | resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==}
729 | dependencies:
730 | '@babel/runtime': 7.21.0
731 | dev: false
732 |
733 | /regenerator-runtime/0.13.11:
734 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
735 | dev: false
736 |
737 | /reselect/4.1.7:
738 | resolution: {integrity: sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==}
739 | dev: false
740 |
741 | /rgbcolor/1.0.1:
742 | resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==}
743 | engines: {node: '>= 0.8.15'}
744 | dev: false
745 | optional: true
746 |
747 | /sass/1.59.3:
748 | resolution: {integrity: sha512-QCq98N3hX1jfTCoUAsF3eyGuXLsY7BCnCEg9qAact94Yc21npG2/mVOqoDvE0fCbWDqiM4WlcJQla0gWG2YlxQ==}
749 | engines: {node: '>=12.0.0'}
750 | hasBin: true
751 | dependencies:
752 | chokidar: 3.5.3
753 | immutable: 4.3.0
754 | source-map-js: 1.0.2
755 | dev: false
756 |
757 | /scheduler/0.23.0:
758 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
759 | dependencies:
760 | loose-envify: 1.4.0
761 | dev: false
762 |
763 | /source-map-js/1.0.2:
764 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
765 | engines: {node: '>=0.10.0'}
766 | dev: false
767 |
768 | /stackblur-canvas/2.5.0:
769 | resolution: {integrity: sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==}
770 | engines: {node: '>=0.1.14'}
771 | dev: false
772 | optional: true
773 |
774 | /styled-jsx/5.1.1_react@18.2.0:
775 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
776 | engines: {node: '>= 12.0.0'}
777 | peerDependencies:
778 | '@babel/core': '*'
779 | babel-plugin-macros: '*'
780 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
781 | peerDependenciesMeta:
782 | '@babel/core':
783 | optional: true
784 | babel-plugin-macros:
785 | optional: true
786 | dependencies:
787 | client-only: 0.0.1
788 | react: 18.2.0
789 | dev: false
790 |
791 | /svg-pathdata/6.0.3:
792 | resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==}
793 | engines: {node: '>=12.0.0'}
794 | dev: false
795 | optional: true
796 |
797 | /text-segmentation/1.0.3:
798 | resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
799 | dependencies:
800 | utrie: 1.0.2
801 | dev: false
802 | optional: true
803 |
804 | /to-regex-range/5.0.1:
805 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
806 | engines: {node: '>=8.0'}
807 | dependencies:
808 | is-number: 7.0.0
809 | dev: false
810 |
811 | /tslib/2.5.0:
812 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
813 | dev: false
814 |
815 | /use-sync-external-store/1.2.0_react@18.2.0:
816 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
817 | peerDependencies:
818 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
819 | dependencies:
820 | react: 18.2.0
821 | dev: false
822 |
823 | /utrie/1.0.2:
824 | resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
825 | dependencies:
826 | base64-arraybuffer: 1.0.2
827 | dev: false
828 | optional: true
829 |
830 | /uuid/3.4.0:
831 | resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
832 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
833 | hasBin: true
834 | dev: false
835 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/public/favicon.ico
--------------------------------------------------------------------------------
/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/thirteen.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/GitHubInsight__Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/src/assets/GitHubInsight__Logo.png
--------------------------------------------------------------------------------
/src/assets/block-chart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/src/assets/block-chart.png
--------------------------------------------------------------------------------
/src/assets/chart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/src/assets/chart.png
--------------------------------------------------------------------------------
/src/assets/github.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/assets/green-ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/src/assets/green-ok.png
--------------------------------------------------------------------------------
/src/assets/ok-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/src/assets/ok-down.png
--------------------------------------------------------------------------------
/src/components/common/Loading.js:
--------------------------------------------------------------------------------
1 | export default function Loading() {
2 | return (
3 |
8 | );
9 | }
10 |
--------------------------------------------------------------------------------
/src/components/follow/FollowItem.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styles from './style.module.scss';
3 | const FollowItem = ({ item }) => {
4 | return (
5 |
6 |
11 |
21 |
22 | );
23 | };
24 |
25 | export default FollowItem;
26 |
--------------------------------------------------------------------------------
/src/components/follow/followerCard.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './style.module.scss';
3 | import Loading from "./loading";
4 | import FollowersDiv from "./followersDiv";
5 | import FollowItem from "./FollowItem";
6 | import { useDispatch, useSelector } from "react-redux";
7 | import { setFollowerPage } from "@/redux/usersSlice";
8 | import NoUserMessage from "./noUserMessage";
9 | import { useGetGithubUserByFollowersQuery } from "@/services/users";
10 |
11 | export default function FollowerCard() {
12 |
13 | const { search, followerPage, followers, following } = useSelector(state => state.users)
14 | const { data, isLoading, isFetching, isSuccess } = useGetGithubUserByFollowersQuery({ name: search, followerPage }, {
15 | refetchOnMountOrArgChange: true,
16 | });
17 | const dispatch = useDispatch();
18 |
19 | const changePageNumber = () => {
20 | if (isSuccess) {
21 | dispatch(setFollowerPage(1))
22 | }
23 | }
24 |
25 | const checkData = (data) => data?.length != 0 && data?.length == process.env.NEXT_PUBLIC_FOLLOWERS_PER_PAGE
26 |
27 | const button =
28 | {isFetching ? "Fetching..." : "Go on"}
29 |
30 |
31 | const followersMap = followers?.map(item => )
32 |
33 | const bottomBar = checkData(data) ? button :
34 |
35 | return
36 | {!isLoading ? {followersMap}{bottomBar} : }
37 |
;
38 | }
39 |
--------------------------------------------------------------------------------
/src/components/follow/followersDiv.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './style.module.scss'
3 |
4 | export default function FollowersDiv({ children }) {
5 | return
6 | {children}
7 |
;
8 | }
9 |
--------------------------------------------------------------------------------
/src/components/follow/followingCard.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Loading from "./loading";
3 | import FollowersDiv from "./followersDiv";
4 | import FollowItem from "./FollowItem";
5 | import NoUserMessage from "./noUserMessage";
6 |
7 | import { useDispatch, useSelector } from "react-redux";
8 | import { setFollowingPage } from "@/redux/usersSlice";
9 | import { useGetGithubUserByFollowingQuery } from "@/services/users";
10 |
11 | import styles from './style.module.scss';
12 |
13 | export default function FollowingCard({ nonFollower }) {
14 |
15 | const dispatch = useDispatch();
16 | const { search, followingPage, following } = useSelector(state => state.users)
17 | const { data, isLoading, isFetching, isSuccess } = useGetGithubUserByFollowingQuery({ name: search, followingPage }, {
18 | refetchOnMountOrArgChange: true,
19 | });
20 |
21 | const changePageNumber = () => {
22 | if (isSuccess) {
23 | dispatch(setFollowingPage(1))
24 | }
25 | }
26 |
27 | const checkData = (data) => data?.length != 0 && data?.length == process.env.NEXT_PUBLIC_FOLLOWERS_PER_PAGE
28 | const button =
29 | {isFetching ? "Fetching..." : "Go on"}
30 |
31 |
32 | const followersMap = following?.map(item => )
33 |
34 | const bottomBar = checkData(data) ? button :
35 |
36 | return
37 | {!isLoading ? {followersMap}{bottomBar} : }
38 |
;
39 | }
40 |
--------------------------------------------------------------------------------
/src/components/follow/index.js:
--------------------------------------------------------------------------------
1 | import FollowerCard from "./followerCard";
2 | import FollowingCard from "./followingCard";
3 | import NonFollowersCard from "./nonFollowers";
4 |
5 | export { FollowerCard, FollowingCard, NonFollowersCard }
--------------------------------------------------------------------------------
/src/components/follow/loading.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | export default function Loading() {
4 | return Loading...
;
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/follow/noUserMessage.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './style.module.scss';
3 |
4 | export default function NoUserMessage() {
5 | return There are no more users to display....
;
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/follow/nonFollowers.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from "react";
2 | import FollowItem from "./FollowItem";
3 | import { useSelector } from "react-redux";
4 | import styles from './style.module.scss';
5 | import { fetchAllFollowersData, fetchAllFollowingData } from "@/helper/getAllData";
6 |
7 | export default function NonFollowersCard() {
8 |
9 | const { search } = useSelector((state) => state.users);
10 | const [followers, setFollowers] = useState();
11 | const [following, setFollowing] = useState();
12 |
13 | useEffect(() => {
14 | fetchAllFollowersData(search).then(data => setFollowers(data));
15 | fetchAllFollowingData(search).then(data => setFollowing(data));
16 | }, [search]);
17 |
18 | const nonFollower = following?.filter((user) => {
19 | return !followers?.some((follower) => {
20 | return follower.id === user.id;
21 | });
22 | });
23 |
24 | return
25 | {nonFollower?.map((item, id) => )}
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/follow/style.module.scss:
--------------------------------------------------------------------------------
1 | .follow__card {
2 | height: "400px";
3 |
4 | .follow__item {
5 | display: flex;
6 | gap: 10px;
7 | padding: 10px 5px;
8 |
9 | .avatar__url {
10 | width: 50px;
11 | height: 50px;
12 | border-radius: 50%;
13 | }
14 |
15 | .followers__info {
16 | h4 {
17 | font-weight: bold;
18 | font-size: 1.8rem;
19 | color: hsla(0, 0%, 100%);
20 | }
21 | a {
22 | color: hsla(0, 0%, 100%, 0.8);
23 | font-size: 1.4rem;
24 | }
25 | }
26 | }
27 |
28 | .follow__go_on_button {
29 | background-color: #efefef;
30 | padding: 10px;
31 | width: 100%;
32 | border-radius: 20px;
33 | margin-top: 10px;
34 | }
35 |
36 | .no_user__message {
37 | font-size: 1.3rem;
38 | color: rgb(182, 182, 182);
39 | padding: 15px 5px;
40 | text-align: center;
41 | margin-top: 5px;
42 | border-top: 2px solid white ;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/components/fusioncharts/FusionChart.js:
--------------------------------------------------------------------------------
1 | import ReactFC from 'react-fusioncharts';
2 |
3 | import FusionCharts from 'fusioncharts';
4 | import Column2D from 'fusioncharts/fusioncharts.charts';
5 | import FusionTheme from 'fusioncharts/themes/fusioncharts.theme.fusion';
6 |
7 | import {
8 | languageConfigs,
9 | forkedReposConfigs,
10 | starsConfigs,
11 | starsPerLangConfigs,
12 | } from '@/data/fusion-configs';
13 |
14 | import { sortData } from '@/helper/sortData';
15 | import { findLanguageData } from '@/helper/findLanguageData';
16 | import styles from './styles.module.scss';
17 | import Title from '../title/title';
18 |
19 | ReactFC.fcRoot(FusionCharts, Column2D, FusionTheme);
20 |
21 |
22 |
23 | const NextFusionCharts = ({ reposData }) => {
24 | if (reposData) {
25 | let starsData = sortData(reposData, 'stargazers_count');
26 | starsConfigs.dataSource.data = starsData;
27 |
28 | let forksData = sortData(reposData, 'forks_count');
29 | forkedReposConfigs.dataSource.data = forksData;
30 |
31 | const langData = findLanguageData(reposData);
32 | languageConfigs.dataSource.data = langData;
33 |
34 | const starsPerLangData = findLanguageData(reposData, 'stargazers_count');
35 | starsPerLangConfigs.dataSource.data = starsPerLangData;
36 | }
37 |
38 | return (
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | );
51 | };
52 |
53 | export default NextFusionCharts;
54 |
--------------------------------------------------------------------------------
/src/components/fusioncharts/styles.module.scss:
--------------------------------------------------------------------------------
1 | .chart {
2 | max-width: 100%;
3 | display: grid;
4 | grid-template-columns: minmax(30%, 1fr) minmax(60%, 1fr);
5 | row-gap: 4rem;
6 | column-gap: 2rem;
7 | margin-top: 2rem;
8 | margin-bottom: 10rem;
9 | }
10 |
11 | @media (max-width: 900px) {
12 | .chart {
13 | grid-template-columns: minmax(30%, 1fr);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/search/index.js:
--------------------------------------------------------------------------------
1 | //core
2 | import React, { useRef } from 'react';
3 |
4 | //styles
5 | import styles from './styles.module.scss';
6 |
7 | //redux
8 | import { useDispatch } from 'react-redux';
9 | import { setSearch } from '@/redux/usersSlice';
10 |
11 | //icons
12 | import { SearchIcon } from '@/icons/index.js';
13 |
14 | //next
15 | import { useRouter } from 'next/router';
16 |
17 |
18 | export default function Search(props) {
19 | const dispatch = useDispatch();
20 | const searchRef = useRef();
21 | const router = useRouter();
22 |
23 | const handleSearch = (e) => {
24 | e.preventDefault();
25 | let searchValue = searchRef.current.value;
26 | if (searchValue.trim()) {
27 | dispatch(setSearch(searchValue.trim()));
28 | router.push('/dashboard');
29 | }
30 | };
31 |
32 | return (
33 |
43 | );
44 | }
45 |
--------------------------------------------------------------------------------
/src/components/search/styles.module.scss:
--------------------------------------------------------------------------------
1 | @import "@/styles/_variables";
2 |
3 | .search {
4 | margin-left: 10px;
5 | margin-right: 10px;
6 | position: relative;
7 |
8 | input {
9 | background-color: $bg-color;
10 | border-radius: 20px;
11 | padding: 10px 20px;
12 | padding-left: 30px;
13 | width: 250px;
14 | height: 40px;
15 | outline: 0;
16 | transition: all 0.3s;
17 | color: rgba(255, 255, 255, 0.8);
18 |
19 | &:focus {
20 | box-shadow: inset 0px 0px 0px 2px #19a7ce;
21 | }
22 | }
23 | svg {
24 | position: absolute;
25 | left: 20px;
26 | top: 50%;
27 | transform: translate(-50%, -50%);
28 |
29 | fill: #fff;
30 | opacity: 0.5;
31 | width: 2rem;
32 | height: 1.5rem;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/components/stats/StatsCard.js:
--------------------------------------------------------------------------------
1 | //components
2 | import Title from '../title/title';
3 | import StatsCardItem from './StatsCartdtem';
4 |
5 | //styles
6 | import styles from './styles.module.scss'
7 |
8 | //icons
9 | import { Repos, Followers, Following, Gists } from '@/icons'
10 |
11 | const StatsCard = ({ data }) => {
12 | return (
13 |
14 |
15 |
16 |
17 | } text='repos' num={data?.public_repos} />
18 | } text='followers' num={data?.followers} />
19 | } text='following' num={data?.following} />
20 | } text='gists' num={data?.public_gists} />
21 |
22 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default StatsCard;
29 |
--------------------------------------------------------------------------------
/src/components/stats/StatsCartdtem.js:
--------------------------------------------------------------------------------
1 | //styles
2 | import styles from './styles.module.scss'
3 |
4 | const StatsCardItem = ({ icon, text, num, ...props }) => {
5 | return (
6 |
7 |
8 |
9 | {icon}
10 |
11 |
12 |
{num}
13 |
{text}
14 |
15 |
16 |
17 | )
18 | }
19 |
20 | export default StatsCardItem
--------------------------------------------------------------------------------
/src/components/stats/styles.module.scss:
--------------------------------------------------------------------------------
1 | @import "@/styles/_variables";
2 |
3 | .stats-container {
4 | display: grid;
5 | grid-template-columns: repeat(4, 1fr);
6 | align-items: center;
7 | gap: 2rem;
8 | margin-top: 20px;
9 | margin-bottom: 20px;
10 | }
11 |
12 | .stats__card {
13 | display: flex;
14 | align-items: center;
15 | justify-content: center;
16 | height: 132px;
17 | border-radius: 20px;
18 | padding: 1.5rem;
19 | background-color: $bg_color_blue;
20 |
21 | .stats__inner {
22 | display: flex;
23 | align-items: flex-start;
24 | justify-items: center;
25 | }
26 |
27 | .icon {
28 | padding: 10px;
29 | border-radius: 50%;
30 | display: flex;
31 | align-items: center;
32 | justify-content: center;
33 |
34 | svg {
35 | width: 5rem;
36 | height: 5rem;
37 | color: #fff;
38 | }
39 | }
40 |
41 | .info {
42 | width: 100%;
43 | text-align: center;
44 | color: #fff;
45 |
46 | h3 {
47 | font-style: normal;
48 | font-weight: 700;
49 | font-size: 64px;
50 | line-height: 90.02%;
51 | }
52 | }
53 | }
54 |
55 | @media (max-width: 900px) {
56 | .stats-container {
57 | grid-template-columns: repeat(2, 1fr);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/components/table/table-mobile.js:
--------------------------------------------------------------------------------
1 | import styles from './table-mobile.module.scss';
2 |
3 | export default function TableMobile({ head, body }) {
4 | return (
5 |
6 | {body.map((items, index) => (
7 |
8 | {items.map((item, key) =>
9 |
10 |
{head[key].name}
11 |
{item}
12 |
13 | )}
14 |
15 | ))}
16 |
17 | )
18 | }
--------------------------------------------------------------------------------
/src/components/table/table-mobile.module.scss:
--------------------------------------------------------------------------------
1 | .tableBox {
2 | font-size: 2.9rem;
3 |
4 | article {
5 | border: 1px solid #f9fafb;
6 | background-color: #f9fafb;
7 | padding: 16px;
8 | border-radius: 10px;
9 | margin-top: 20px;
10 |
11 | div {
12 | padding-top: 10px;
13 | padding-bottom: 10px;
14 | p {
15 | font-size: 2rem;
16 | }
17 | a {
18 | font-size: 2rem;
19 | }
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/components/table/table.js:
--------------------------------------------------------------------------------
1 | import { useState } from "react";
2 | import { FaSortDown, FaSortUp, FaSort } from "react-icons/fa"
3 | import { useMediaQuery } from '@react-hook/media-query'
4 | import TableMobile from "./table-mobile";
5 | import styles from './table.module.scss';
6 |
7 |
8 | export default function Table({ head, body, searchable }) {
9 |
10 | const isMobile = useMediaQuery('(max-width: 600px)')
11 |
12 | const [sorting, setSorting] = useState(false)
13 | const [search, setSearch] = useState('')
14 | const filteredData = body && body.filter(
15 | items => items.some(
16 | item => ((item?.key || item?.props?.searchableText || item) || (item !== "null")).toString().toLocaleLowerCase('TR').includes(search.toLocaleLowerCase('TR'))
17 | )
18 | ).sort((a, b) => {
19 | if (sorting?.orderBy === 'asc') {
20 | if (typeof b[sorting.key] === "number") {
21 | return a[sorting.key] - b[sorting.key];
22 | }
23 | return (a[sorting.key]?.key || a[sorting.key]?.props?.searchableText || a[sorting.key]).toString().localeCompare(b[sorting.key]?.key || b[sorting.key]?.props?.searchableText || b[sorting.key])
24 | }
25 | if (sorting?.orderBy === 'desc') {
26 | if (typeof b[sorting.key] === "number") {
27 | return b[sorting.key] - a[sorting.key];
28 | }
29 | return b[sorting.key].toString().localeCompare(a[sorting.key])
30 | }
31 | })
32 |
33 | if (!body || body?.length === 0) {
34 | return (
35 | Gösterilecek veri bulunmuyor.
36 | )
37 | }
38 |
39 | return (
40 | <>
41 | {searchable && (
42 |
43 | setSearch(e.target.value)}
46 | type="text"
47 | placeholder="Tabloda ara"
48 | />
49 | {sorting && (
50 | setSorting(false)}
52 | >
53 | Sıralamayı İptal Et
54 |
55 | )}
56 |
57 | )}
58 | {isMobile && }
59 | {!isMobile && (
60 |
61 |
62 |
63 |
64 | {head.map((h, key) => (
65 |
68 |
69 | {h.name}
70 | {h.sortable && (
71 | {
72 | if (sorting?.key === key) {
73 | setSorting({
74 | key,
75 | orderBy: sorting.orderBy === 'asc' ? 'desc' : 'asc'
76 | })
77 | } else {
78 | setSorting({
79 | key,
80 | orderBy: 'asc'
81 | })
82 | }
83 | }}>
84 | {sorting?.key === key && (
85 | sorting.orderBy === 'asc' ? :
86 | )}
87 | {sorting?.key !== key && }
88 |
89 | )}
90 |
91 |
92 | ))}
93 |
94 |
95 |
96 | {filteredData.map((items, key) => (
97 |
98 | {items.map((item, key) => (
99 |
101 | {Array.isArray(item) ? (
102 |
103 | {item}
104 |
105 | ) : item}
106 |
107 | ))}
108 |
109 | ))}
110 |
111 |
112 |
113 | )
114 | }
115 | >
116 | )
117 | }
--------------------------------------------------------------------------------
/src/components/table/table.module.scss:
--------------------------------------------------------------------------------
1 | .no-data {
2 | padding: 1rem;
3 | background-color: #fef3c7;
4 | color: #b45309;
5 | font-size: 1.5rem;
6 | line-height: 1.5rem;
7 | border-radius: 10px;
8 | }
9 |
10 | .searchable {
11 | display: flex;
12 | margin-bottom: 1rem;
13 | column-gap: 0.5rem;
14 | margin-top: 5rem;
15 |
16 | input {
17 | padding: 1.8rem 1.8rem;
18 | font-size: 1.2rem;
19 | line-height: 1.25rem;
20 | width: 100%;
21 | border-radius: 10px;
22 | border-width: 1px;
23 | border-color: #d1d5db;
24 | outline: 0;
25 | }
26 |
27 | button {
28 | height: 100%;
29 | padding: 1.8rem 1.8rem;
30 | color: #000000;
31 | font-size: 1.4rem;
32 | line-height: 1.25rem;
33 | white-space: nowrap;
34 | border-radius: 10px;
35 | border-color: #ffffff;
36 | cursor: pointer;
37 | background-color: #fff;
38 | }
39 | }
40 |
41 | .table__container {
42 | width: 100%;
43 | border-radius: 0.25rem;
44 | border-width: 1px;
45 | font-size: 1.4rem;
46 | margin-top: 2rem;
47 | color: #fff;
48 | table {
49 | width: 100%;
50 | border-collapse: collapse;
51 | }
52 |
53 | th {
54 | margin: 5px;
55 | padding: 1rem;
56 | background-color: #343f50;
57 | color: #fff;
58 | line-height: 1.25rem;
59 | font-weight: 600;
60 | text-align: left;
61 | border-bottom-width: 1px;
62 | border-top-left-radius: 10px;
63 | border-top-right-radius: 10px;
64 | margin-right: 10px;
65 | border: 1px solid #000000;
66 |
67 | div {
68 | width: 100%;
69 | display: inline-flex;
70 | justify-content: space-between;
71 | align-items: center;
72 | column-gap: 0.5rem;
73 | }
74 | }
75 | tbody {
76 | tr {
77 | background-color: transparent;
78 | transition: all 0.05s;
79 | &:hover {
80 | background-color: #343f50;
81 | }
82 |
83 | &:last-child {
84 | td {
85 | border-bottom-left-radius: 10px;
86 | border-bottom-right-radius: 10px;
87 | }
88 | }
89 |
90 | td {
91 | padding: 1rem;
92 | line-height: 2rem;
93 | border: 1px solid #343f50;
94 | div {
95 | display: flex;
96 | column-gap: 0.625rem;
97 | }
98 |
99 | a {
100 | color: #fff;
101 | }
102 | }
103 | }
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/src/components/title/styles.module.scss:
--------------------------------------------------------------------------------
1 | .title {
2 | color: #fff;
3 | margin-top: 5rem;
4 | h2 {
5 | font-size: 2rem;
6 | }
7 | p {
8 | font-size: 1.6rem;
9 | color: hsla(0, 0%, 100%, 0.5);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/title/title.js:
--------------------------------------------------------------------------------
1 | import styles from './styles.module.scss';
2 |
3 | export default function Title({ h1, p }) {
4 | return ;
8 | }
9 |
--------------------------------------------------------------------------------
/src/components/userCard/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styles from './styles.module.scss';
3 | import { Company, LinkIcon, Location } from '@/icons';
4 |
5 | const UserCard = ({ data }) => {
6 |
7 | const showUserInfo = (name, IconComponent) => name && {name}
8 |
9 | return (
10 |
11 |
12 |
13 |
27 | {data?.bio}
28 |
29 | {showUserInfo(data?.company, Company)}
30 | {showUserInfo(data?.location, Location)}
31 | {showUserInfo(data?.blog, LinkIcon)}
32 |
33 |
34 |
35 |
36 | );
37 | };
38 |
39 | export default UserCard;
40 |
--------------------------------------------------------------------------------
/src/components/userCard/styles.module.scss:
--------------------------------------------------------------------------------
1 | @import "@/styles/variables";
2 |
3 | .card {
4 | flex: 1;
5 | background-color: #19376d;
6 | border-radius: 20px;
7 | position: relative;
8 | color: #fff;
9 | }
10 |
11 | .user {
12 | padding: 3rem;
13 | header {
14 | display: flex;
15 | gap: 1.5rem;
16 | align-items: center;
17 | margin-bottom: 2rem;
18 |
19 | img {
20 | width: 9rem;
21 | height: 9rem;
22 | border-radius: 50%;
23 | object-fit: cover;
24 | }
25 |
26 | div {
27 | margin-right: auto;
28 |
29 | h4 {
30 | font-size: 2rem;
31 | letter-spacing: 1.2px;
32 | }
33 |
34 | p {
35 | font-size: 1.4rem;
36 | color: #fff;
37 | }
38 | }
39 | }
40 |
41 | .bio {
42 | margin-bottom: 3rem;
43 | }
44 |
45 | .follow-link {
46 | background: #d9d9d9;
47 | border-radius: 75px;
48 | padding: 10px 30px;
49 | color: #000;
50 | }
51 |
52 | .user-info {
53 | p,
54 | a {
55 | font-size: 1.6rem;
56 | color: rgba(255, 255, 255, 0.815);
57 | margin-bottom: 10px;
58 |
59 | svg {
60 | margin-right: 8px;
61 | }
62 | }
63 | }
64 | }
65 |
66 | @media (max-width: 900px) {
67 | .card {
68 | margin-bottom: 4rem;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/container/dashboard/followerCardContainer/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { FollowerCard } from "@/components/follow";
3 | import styles from '@/container/dashboard/styles.module.scss';
4 | import Title from "@/components/title/title";
5 | import UserCard from "@/components/userCard";
6 |
7 | export default function FollowerCardContainer({ data }) {
8 | return
26 | }
--------------------------------------------------------------------------------
/src/container/dashboard/index.js:
--------------------------------------------------------------------------------
1 | import React, { useState, useEffect } from 'react';
2 | import dynamic from 'next/dynamic';
3 | import StatsCard from '@/components/stats/StatsCard';
4 | const NextFusionCharts = dynamic(
5 | () => import('@/components/fusioncharts/FusionChart'),
6 | { ssr: false }
7 | );
8 | import { useGetGithubUserByNameQuery } from '@/services/users';
9 | import { useSelector } from 'react-redux';
10 | import FollowerCardContainer from './followerCardContainer';
11 | import { fetchAllReposData } from '@/helper/getAllData';
12 |
13 | export default function DashBoardContainer() {
14 |
15 | const [repos, setRepos] = useState();
16 | const { search } = useSelector((state) => state.users);
17 | const { data, isLoading } = useGetGithubUserByNameQuery(search);
18 |
19 |
20 | useEffect(() => {
21 | fetchAllReposData(search).then(data => setRepos(data));
22 | }, [search]);
23 |
24 |
25 | return (
26 | <>
27 | {!isLoading &&
28 |
29 |
30 |
31 | }
32 | >
33 | );
34 | }
35 |
--------------------------------------------------------------------------------
/src/container/dashboard/styles.module.scss:
--------------------------------------------------------------------------------
1 | .cards__container {
2 | display: grid;
3 | grid-template-columns: repeat(2, 1fr);
4 | gap: 2rem;
5 | }
6 |
7 | .follower__container {
8 | margin-top: 20px;
9 | height: 400px;
10 | overflow: auto;
11 | background-color: #19376d;
12 | border-radius: 20px;
13 | padding: 20px;
14 | overscroll-behavior: contain;
15 |
16 | /* width */
17 | &::-webkit-scrollbar {
18 | width: 8px;
19 | border-radius: 50%;
20 | }
21 |
22 | /* Track */
23 | &::-webkit-scrollbar-track {
24 | background: #efefef;
25 | border-radius: 20px;
26 | padding: 1px;
27 | }
28 |
29 | /* Handle */
30 | &::-webkit-scrollbar-thumb {
31 | background: #333;
32 | }
33 |
34 | /* Handle on hover */
35 | &::-webkit-scrollbar-thumb:hover {
36 | background: #111;
37 | }
38 | }
39 |
40 | @media only screen and (max-width: 700px) {
41 | .cards__container {
42 | grid-template-columns: repeat(1, 1fr);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/container/home/about/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './styles.module.scss';
3 |
4 | export default function About() {
5 | return <>
6 |
7 |
8 |
9 |
About Github Insight
10 |
Github Insight is an application that uses Github API to analyze user data on Github accounts. This application allows users to view statistics on their Github repositories, follower count, followed users, non-followers, rate limits, and many other pieces of information.
11 |
12 |
13 |
14 | >;
15 | }
16 |
--------------------------------------------------------------------------------
/src/container/home/about/styles.module.scss:
--------------------------------------------------------------------------------
1 | .about__section {
2 | background-color: #010101;
3 | padding-top: 100px;
4 | padding-bottom: 100px;
5 |
6 | .container__inner {
7 | width: 600px;
8 | margin-left: auto;
9 | margin-right: auto;
10 | }
11 |
12 | h2,
13 | p {
14 | text-align: center;
15 | color: #ffffffd7;
16 | }
17 |
18 | h2 {
19 | font-weight: 700;
20 | font-size: 32px;
21 | line-height: 222.52%;
22 | }
23 |
24 | p {
25 | font-weight: 400;
26 | font-size: 16px;
27 | line-height: 222.52%;
28 | }
29 | }
30 |
31 | @media only screen and (max-width: 700px) {
32 | .container__inner {
33 | width: 100% !important;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/container/home/feature/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './styles.module.scss';
3 | import { NonFollowersIcon, RateIcon, Repos } from "@/icons";
4 |
5 | import Link from 'next/link';
6 |
7 | export default function Feature() {
8 | return
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Repos
17 |
The repositories pulled from GitHub are collections of code and related files that developers use to manage and collaborate on their projects.
18 |
Analyze
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Non-followers
27 |
The non-followers feature allows you to identify users who do not follow you back on GitHub. This feature can help you manage your follower list and identify potential followers who may be interested in your work.
28 |
Analyze
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
Rate
37 |
The rate feature enables you to analyze users' activities on GitHub, such as their repositories, stars, forks, and other statistics. This feature can help you gauge a user's level of activity and engagement on the platform.
38 |
Analyze
39 |
40 |
41 |
42 |
43 | ;
44 | }
45 |
--------------------------------------------------------------------------------
/src/container/home/feature/styles.module.scss:
--------------------------------------------------------------------------------
1 | .container_inner {
2 | display: flex;
3 | flex-direction: column;
4 | align-items: center;
5 | justify-content: center;
6 | padding-top: 40px;
7 | padding-bottom: 40px;
8 |
9 | .container__inner__box {
10 | display: flex;
11 | align-items: center;
12 | justify-content: center;
13 | width: 600px;
14 | gap: 20px;
15 | margin-bottom: 60px;
16 |
17 | &:nth-child(2n) {
18 | .image {
19 | order: 1;
20 | }
21 | }
22 | }
23 |
24 | .image {
25 | border-radius: 50%;
26 | max-width: 120px;
27 | max-height: 120px;
28 | min-width: 120px;
29 | min-height: 120px;
30 | background-color: #fff;
31 | display: flex;
32 | align-items: center;
33 | justify-content: center;
34 | }
35 |
36 | .text {
37 | font-weight: 400;
38 | font-size: 16px;
39 | line-height: 160.02%;
40 | color: #ffffff;
41 | h2 {
42 | font-weight: 700;
43 | font-size: 20px;
44 | line-height: 222.52%;
45 | }
46 | }
47 | }
48 |
49 | @media only screen and (max-width: 700px) {
50 | .container__inner__box {
51 | flex-direction: column;
52 | width: 100% !important;
53 | text-align: center;
54 |
55 | &:nth-child(2n) {
56 | .image {
57 | order: 0 !important;
58 | }
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/container/home/hero/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './styles.module.scss';
3 | import blockChart from '@/assets/block-chart.png'
4 | import chart from '@/assets/chart.png'
5 | import greenOk from '@/assets/green-ok.png'
6 | import okDown from '@/assets/ok-down.png'
7 | import Search from "@/components/search";
8 |
9 | export default function Hero() {
10 |
11 | console.log(blockChart.src);
12 |
13 | return <>
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
Explore Your GitHub
23 |
26 | < p >
Analyze , < b > Refine, and
Boost Your Github Account.
27 |
28 |
29 |
30 |
31 | >;
32 | }
33 |
--------------------------------------------------------------------------------
/src/container/home/hero/styles.module.scss:
--------------------------------------------------------------------------------
1 | .hero_container {
2 | display: flex;
3 | align-items: center;
4 | justify-content: center;
5 | height: calc(100vh - 100px);
6 |
7 | .hero_container_inner {
8 | position: relative;
9 | width: 600px;
10 | }
11 |
12 | h1,
13 | p {
14 | text-align: center;
15 | }
16 |
17 | h1 {
18 | font-weight: 700;
19 | font-size: 64px;
20 | line-height: 77px;
21 | color: rgba(138, 144, 200, 0.86);
22 | }
23 |
24 | p {
25 | font-weight: 300;
26 | font-size: 36px;
27 | line-height: 70px;
28 | text-align: center;
29 | color: #ffffff;
30 | }
31 |
32 | .blockChart,
33 | .chart,
34 | .greenOk,
35 | .okDown {
36 | position: absolute;
37 | }
38 |
39 | .blockChart {
40 | right: -50px;
41 | top: -60px;
42 | }
43 |
44 | .chart {
45 | left: 100px;
46 | bottom: -50px;
47 | }
48 |
49 | .greenOk {
50 | left: -100px;
51 | top: -50px;
52 | }
53 |
54 | .okDown {
55 | right: 0px;
56 | bottom: -100px;
57 | }
58 | }
59 |
60 | @media only screen and (max-width: 700px) {
61 | .blockChart,
62 | .chart,
63 | .greenOk,
64 | .okDown {
65 | display: none;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/container/home/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Hero from "./hero";
3 | import About from "./about";
4 | import Feature from "./feature";
5 | import Footer from "@/layout/footer";
6 |
7 | export default function HomeContainer() {
8 | return (<>
9 |
10 |
11 |
12 | >);
13 | }
14 |
--------------------------------------------------------------------------------
/src/container/home/styles.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yasinelbuz/github-insight/fe8b78052cc4e2b24ee9c7b243c6cc410574b452/src/container/home/styles.module.scss
--------------------------------------------------------------------------------
/src/container/nonFollowers/container/Follower.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styles from '@/container/nonFollowers/nonFollowers.module.scss';
3 | const Follower = ({ followers }) => {
4 | return (
5 |
6 |
11 |
21 |
22 | );
23 | };
24 |
25 | export default Follower;
26 |
--------------------------------------------------------------------------------
/src/container/nonFollowers/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './nonFollowers.module.scss'
3 | import { FollowerCard, FollowingCard, NonFollowersCard } from '@/components/follow/'
4 |
5 | export default function NonFollowersContainer() {
6 | return
7 |
8 |
9 |
Non-Followers
10 |
Github Follower Analysis: This page shows follower and following statistics related to your Github account. The list you see on the page consists of non-followers, which are obtained by taking the difference between your followers and following lists.
11 |
12 |
13 |
14 |
15 |
Follower
16 |
17 |
18 |
19 |
20 |
21 |
22 |
Following
23 |
24 |
25 |
26 |
27 |
Non-Followers
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/src/container/nonFollowers/nonFollowers.module.scss:
--------------------------------------------------------------------------------
1 | .nonfollowers__container {
2 | display: grid;
3 | grid-template-columns: repeat(3, 1fr);
4 | align-items: center;
5 | grid-gap: 2rem;
6 | gap: 2rem;
7 | margin-top: 5rem;
8 |
9 | & > div {
10 | background-color: #161b22;
11 | padding: 10px;
12 | border-radius: 10px;
13 | height: 400px;
14 | overflow-y: auto;
15 | }
16 | }
17 |
18 | .box {
19 | display: flex;
20 | }
21 |
22 | .avatar__url {
23 | width: 50px;
24 | height: 50px;
25 | border-radius: 50%;
26 | }
27 |
28 | .section_container {
29 | margin-top: 5rem;
30 | margin-bottom: 5rem;
31 | h1,
32 | p {
33 | color: #fff;
34 | text-align: center;
35 | width: 800px;
36 | margin-left: auto;
37 | margin-right: auto;
38 | line-height: 2.6rem;
39 | }
40 | h1 {
41 | font-size: 2.8rem;
42 | margin-bottom: 1rem;
43 | }
44 | }
45 |
46 | .follower {
47 | position: relative;
48 | h2 {
49 | position: sticky;
50 | top: -10px;
51 | padding: 20px;
52 | margin-left: -10px;
53 | margin-top: -10px;
54 | width: calc(100% + 10px);
55 | color: #fff;
56 | background: rgb(0, 0, 0);
57 | background: linear-gradient(180deg, rgba(0, 0, 0, 0.6979166666666667) 75%, rgba(255, 255, 255, 0) 100%);
58 | }
59 | }
60 |
61 | .following {
62 | position: relative;
63 | h2 {
64 | position: sticky;
65 | top: -10px;
66 | padding: 20px;
67 | margin-left: -10px;
68 | margin-top: -10px;
69 | width: calc(100% + 10px);
70 | color: #fff;
71 | background: rgb(0, 0, 0);
72 | background: linear-gradient(180deg, rgba(0, 0, 0, 0.6979166666666667) 75%, rgba(255, 255, 255, 0) 100%);
73 | }
74 | }
75 |
76 | .nonfollowers {
77 | position: relative;
78 | h2 {
79 | position: sticky;
80 | top: -10px;
81 | padding: 20px;
82 | margin-left: -10px;
83 | margin-top: -10px;
84 | width: calc(100% + 10px);
85 | color: #fff;
86 | background: rgb(0, 0, 0);
87 | background: linear-gradient(180deg, rgba(0, 0, 0, 0.6979166666666667) 75%, rgba(255, 255, 255, 0) 100%);
88 | }
89 | }
90 |
91 | @media only screen and (max-width: 900px) {
92 | .nonfollowers__container {
93 | grid-template-columns: repeat(1, 1fr);
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/container/rate/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | export default function RateContainer() {
4 | return
5 |
6 | çok yakında
7 |
8 | ;
9 | }
10 |
--------------------------------------------------------------------------------
/src/container/repos/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Table from "@/components/table/table";
3 | import { useGetGithubUserByReposQuery } from "@/services/users";
4 | import { useSelector } from "react-redux";
5 |
6 | export default function ReposContainer() {
7 |
8 | const { search } = useSelector(state => state.users);
9 | const { data: repos, isLoading } = useGetGithubUserByReposQuery(search);
10 |
11 | const tableHead = [
12 | { name: 'Repo name', sortable: true, width: "200px" },
13 | { name: 'Description' },
14 | { name: 'Star count', sortable: true },
15 | { name: 'Forks count', sortable: true },
16 | { name: 'Size', sortable: true },
17 | { name: 'Is Fork?', sortable: true },
18 | { name: 'Created at', sortable: true, width: "125px" },
19 | { name: 'Repo url' },
20 | ];
21 |
22 | const tableBody = repos?.map(repo => ([
23 | {repo.name} ,
24 | repo.description,
25 | repo.stargazers_count,
26 | repo.forks_count,
27 | repo.size,
28 | repo.fork ? "Yes" : "No",
29 | repo.created_at.slice(0, 10),
30 | Repo ,
31 | ]));
32 |
33 | return <>
34 |
35 |
36 |
37 | {!isLoading ?
: "Loading"}
42 |
43 |
44 |
45 | >
46 | }
47 |
--------------------------------------------------------------------------------
/src/data/fusion-configs.js:
--------------------------------------------------------------------------------
1 | const color = '#2caeba, #5d62b5, #ffc533, #f2726f, #8d6e63';
2 | export const languageConfigs = {
3 | type: 'pie2d',
4 | width: '100%',
5 | height: '400',
6 | dataFormat: 'json',
7 | dataSource: {
8 | chart: {
9 | caption: 'Language',
10 | subCaption: "Which language has more repositories?",
11 | showLegend: '0',
12 | decimals: '0',
13 | showPercentValues: '0',
14 | theme: 'fusion',
15 | palettecolors: color,
16 | "bgColor": "#161B22",
17 | "baseFontColor": "#fff",
18 | "outCnvBaseFontColor": "#fff",
19 | "valueFontColor": "#fff",
20 | "baseFontColor": "#000"
21 | },
22 | },
23 | };
24 | export const starsConfigs = {
25 | type: 'column2d',
26 | width: '100%',
27 | height: '400',
28 | dataFormat: 'json',
29 | dataSource: {
30 | chart: {
31 | caption: 'Most Popular',
32 | subCaption: "Which repos got the most stars?",
33 | showValues: '1',
34 | xAxisName: 'Repos',
35 | yAxisName: 'Stars',
36 | xAxisNameFontSize: '18',
37 | xAxisNameFontBold: '1',
38 | xAxisNameFontColor: '#617d98',
39 | yAxisNameFontSize: '18',
40 | yAxisNameFontBold: '1',
41 | yAxisNameFontColor: '#617d98',
42 | theme: 'fusion',
43 | palettecolors: color,
44 | "bgColor": "#161B22",
45 | "baseFontColor": "#fff",
46 | "outCnvBaseFontColor": "#fff",
47 | "valueFontColor": "#fff",
48 | "baseFontColor": "#000"
49 | },
50 | },
51 | };
52 | export const starsPerLangConfigs = {
53 | type: 'doughnut2d',
54 | width: '100%',
55 | height: '400',
56 | dataFormat: 'json',
57 | dataSource: {
58 | chart: {
59 | caption: 'Stars Per Language',
60 | subCaption: "Which language got more stars?",
61 | decimals: '0',
62 | showPercentValues: '0',
63 | showLegend: '0',
64 | xAxisName: 'Repos',
65 | yAxisName: 'Stars',
66 | theme: 'fusion',
67 | palettecolors: color,
68 | "bgColor": "#161B22",
69 | "baseFontColor": "#fff",
70 | "outCnvBaseFontColor": "#fff",
71 | "valueFontColor": "#fff",
72 | "baseFontColor": "#000"
73 | },
74 | },
75 | };
76 | export const forkedReposConfigs = {
77 | type: 'bar2d',
78 | width: '100%',
79 | height: '400',
80 | dataFormat: 'json',
81 | dataSource: {
82 | chart: {
83 | caption: 'Most Forked',
84 | subCaption: "Which repos are more forked?",
85 | showValues: '1',
86 | xAxisName: 'Repos',
87 | yAxisName: 'Forks',
88 | xAxisNameFontSize: '18',
89 | xAxisNameFontBold: '1',
90 | xAxisNameFontColor: '#617d98',
91 | yAxisNameFontSize: '18',
92 | yAxisNameFontBold: '1',
93 | yAxisNameFontColor: '#fff',
94 | theme: 'fusion',
95 | palettecolors: color,
96 | "bgColor": "#161B22",
97 | "baseFontColor": "#fff",
98 | "outCnvBaseFontColor": "#fff",
99 | "valueFontColor": "#fff",
100 | "baseFontColor": "#000"
101 |
102 | },
103 | },
104 | };
--------------------------------------------------------------------------------
/src/data/stats-card-item-data.js:
--------------------------------------------------------------------------------
1 | export const statsCardItemData = [
2 | {
3 | icon: "Repos",
4 | text: "repos",
5 | num: "public_repos",
6 | },
7 | {
8 | icon: "Repos",
9 | text: "repos",
10 | num: "public_repos",
11 | },
12 | {
13 | icon: "Repos",
14 | text: "repos",
15 | num: "public_repos",
16 | },
17 | {
18 | icon: "Repos",
19 | text: "repos",
20 | num: "public_repos",
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/src/helper/findLanguageData.js:
--------------------------------------------------------------------------------
1 | export const findLanguageData = (data, value) => {
2 | const langObj = data.reduce((acc, cur) => {
3 | if (cur.language !== null) {
4 | if (value) {
5 | acc[cur.language] = (acc[cur.language] || 0) + cur[value];
6 | } else {
7 | acc[cur.language] = (acc[cur.language] || 0) + 1;
8 | }
9 | }
10 | return acc;
11 | }, {});
12 |
13 | return Object.keys(langObj).map((language) => {
14 | return {
15 | label: language,
16 | value: langObj[language],
17 | };
18 | });
19 | };
--------------------------------------------------------------------------------
/src/helper/getAllData.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @param {*} name search
4 | * @returns
5 | */
6 | async function fetchAllFollowersData(name) {
7 | let page = 1;
8 | let allData = [];
9 |
10 | for (let index = 1; index <= 3; index++) {
11 | //const response = await fetch(`${process.env.NEXT_PUBLIC_MOCK_API}/followers`) => you wanna mock api
12 | const response = await fetch(`${process.env.NEXT_PUBLIC_API}users/${name}/followers?page=${page}&per_page=${process.env.NEXT_PUBLIC_FOLLOWERS_PER_PAGE}`)
13 | const data = await response.json();
14 |
15 | if (response.length === 0) {
16 | break;
17 | }
18 |
19 | allData.push(...data);
20 | page++;
21 | }
22 |
23 | return allData;
24 | }
25 |
26 | /**
27 | *
28 | * @param {*} name search
29 | * @returns
30 | */
31 | async function fetchAllFollowingData(name) {
32 | let page = 1;
33 | let allData = [];
34 |
35 | for (let index = 1; index <= 3; index++) {
36 | //const response = await fetch(`${process.env.NEXT_PUBLIC_MOCK_API}/following`) => you wanna mock api
37 | const response = await fetch(`${process.env.NEXT_PUBLIC_API}users/${name}/following?page=${page}&per_page=${process.env.NEXT_PUBLIC_FOLLOWING_PER_PAGE}`)
38 | const data = await response.json();
39 |
40 | if (data.length === 0) {
41 | break;
42 | }
43 |
44 | allData.push(...data);
45 | page++;
46 | }
47 |
48 | return allData;
49 | }
50 |
51 | /**
52 | *
53 | * @param {*} name search
54 | * @returns
55 | */
56 | async function fetchAllReposData(name) {
57 | let page = 1;
58 | let allData = [];
59 |
60 | for (let index = 1; index <= 3; index++) {
61 | //const response = await fetch(`${process.env.NEXT_PUBLIC_MOCK_API}/repos`) => you wanna mock api
62 | const response = await fetch(`${process.env.NEXT_PUBLIC_API}users/${name}/repos?page=${page}&per_page=${process.env.NEXT_PUBLIC_REPOS_PER_PAGE}`)
63 | const data = await response.json();
64 |
65 | if (data.length === 0) {
66 | break;
67 | }
68 |
69 | allData.push(...data);
70 | page++;
71 | }
72 |
73 | return allData;
74 | }
75 |
76 | export { fetchAllFollowersData, fetchAllFollowingData, fetchAllReposData };
--------------------------------------------------------------------------------
/src/helper/sortData.js:
--------------------------------------------------------------------------------
1 | export const sortData = (data, text) => {
2 | return [...data]
3 | ?.sort((a, b) => {
4 | return b[text] - a[text];
5 | })
6 | .slice(0, 5)
7 | .map((item) => ({
8 | label: item.name,
9 | value: item[text],
10 | }));
11 | };
12 |
--------------------------------------------------------------------------------
/src/icons/index.js:
--------------------------------------------------------------------------------
1 | export const Repos = (props) => {
2 | return (
3 |
14 |
18 |
19 | );
20 | };
21 |
22 | export const Followers = (props) => {
23 | return (
24 |
37 |
38 |
39 |
40 |
41 |
42 | );
43 | };
44 |
45 | export const Following = (props) => {
46 | return (
47 |
60 |
61 |
62 |
63 |
64 |
65 | );
66 | };
67 | export const Gists = (props) => {
68 | return (
69 |
80 |
84 |
85 | );
86 | };
87 | export const Location = (props) => {
88 | return (
89 |
99 |
100 |
101 |
102 | );
103 | };
104 | export const Company = (props) => {
105 | return (
106 |
116 |
117 |
118 |
119 | );
120 | };
121 | export const LinkIcon = (props) => {
122 | return (
123 |
133 |
134 |
135 |
136 | );
137 | };
138 | export const SearchIcon = (props) => {
139 | return (
140 |
150 |
151 |
152 |
153 | );
154 | };
155 |
156 |
157 | export const StarIcon = (props) => {
158 | return (
159 |
168 |
169 |
170 | );
171 | };
172 |
173 |
174 | export const HamburgerIcon = (props) => {
175 | return (
176 |
183 |
184 |
185 | );
186 | };
187 |
188 |
189 | export const NonFollowersIcon = (props) => {
190 | return (
191 |
198 |
199 |
200 |
201 | );
202 | };
203 |
204 | export const RateIcon = (props) => {
205 | return (
206 |
213 |
214 |
215 | );
216 | };
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
--------------------------------------------------------------------------------
/src/layout/footer/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import styles from './styles.module.scss';
3 | import Logo from "../header/logo";
4 | import Link from "next/link";
5 | import github from '@/assets/github.svg'
6 |
7 | export default function Footer() {
8 |
9 | console.log(github);
10 |
11 | return
12 |
13 |
14 |
Github Insight provides users with a broader perspective by leveraging a limited service offered by the Github API.
15 |
16 |
31 | ;
32 | }
33 |
--------------------------------------------------------------------------------
/src/layout/footer/styles.module.scss:
--------------------------------------------------------------------------------
1 | .section__footer {
2 | background-color: #000;
3 | padding-top: 40px;
4 | padding-bottom: 40px;
5 | display: flex;
6 | justify-content: space-between;
7 | align-items: flex-start;
8 |
9 | .footer__logo {
10 | width: 300px;
11 |
12 | p {
13 | color: hsla(0, 0%, 100%, 0.5);
14 | line-height: 140%;
15 | }
16 | }
17 |
18 | .section__right {
19 | .open__source {
20 | display: flex;
21 | align-items: center;
22 | gap: 10px;
23 | }
24 |
25 | a {
26 | display: flex;
27 | flex-direction: column;
28 | color: #fff;
29 |
30 | img {
31 | width: 24px;
32 | }
33 | }
34 |
35 | & > div {
36 | display: flex;
37 | align-items: center;
38 | gap: 20px;
39 | }
40 | }
41 | }
42 |
43 | @media only screen and (max-width: 700px) {
44 | .section__footer {
45 | flex-direction: column;
46 | gap: 40px;
47 | align-items: center;
48 | justify-content: center;
49 | text-align: center;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/layout/header/hamburgerBox.js:
--------------------------------------------------------------------------------
1 | //icons
2 | import { HamburgerIcon } from "@/icons";
3 |
4 | //styles
5 | import styles from './styles.module.scss';
6 |
7 | //redux
8 | import { useDispatch, useSelector } from "react-redux";
9 | import { setOpenMobileMenu } from "@/redux/theme";
10 |
11 | export default function HamburgerBox() {
12 |
13 | const dispatch = useDispatch();
14 | const { isOpenMobileMenu } = useSelector((state) => state.theme)
15 |
16 | const handleOpen = () => {
17 | dispatch(setOpenMobileMenu(!isOpenMobileMenu))
18 | }
19 |
20 | return
21 |
22 |
;
23 | }
24 |
--------------------------------------------------------------------------------
/src/layout/header/index.js:
--------------------------------------------------------------------------------
1 | //styles
2 | import styles from './styles.module.scss';
3 |
4 | //component
5 | import SidebarLeft from "./sidebarLeft";
6 | import SidebarRight from "./sidebarRight";
7 | import MobileMenu from "./mobileMenu";
8 |
9 | export default function Header() {
10 |
11 | return <>
12 |
18 |
19 | >
20 | }
21 |
--------------------------------------------------------------------------------
/src/layout/header/logo.js:
--------------------------------------------------------------------------------
1 | //image
2 | import logo from '@/assets/GitHubInsight__Logo.png';
3 |
4 | //next
5 | import Image from 'next/image';
6 | import Link from 'next/link';
7 |
8 | //styles
9 | import styles from './styles.module.scss';
10 |
11 | export default function Logo() {
12 | return
13 |
14 |
18 |
19 |
;
20 | }
21 |
--------------------------------------------------------------------------------
/src/layout/header/mobileMenu.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | //styles
4 | import styles from './styles.module.scss';
5 |
6 | //components
7 | import Search from "@/components/search";
8 | import Navigation from "./navigation";
9 |
10 | //redux
11 | import { useSelector } from "react-redux";
12 |
13 | export default function MobileMenu() {
14 |
15 | const { isOpenMobileMenu } = useSelector((state) => state.theme);
16 |
17 | return (
18 | <>
19 | {isOpenMobileMenu && }
27 |
28 | >
29 | );
30 | }
31 |
--------------------------------------------------------------------------------
/src/layout/header/navigation.js:
--------------------------------------------------------------------------------
1 | //styles
2 | import styles from './styles.module.scss';
3 |
4 | //next
5 | import Link from "next/link";
6 |
7 | export default function Navigation() {
8 | return
9 | Home
10 | Dashboard
11 | Repos
12 | Non-Followers
13 | Rate
14 | ;
15 | }
16 |
--------------------------------------------------------------------------------
/src/layout/header/sidebarLeft.js:
--------------------------------------------------------------------------------
1 |
2 | //components
3 | import Search from '@/components/search';
4 | import HamburgerBox from './hamburgerBox';
5 | import Logo from './logo';
6 | import Navigation from './navigation';
7 |
8 | //styles
9 | import styles from './styles.module.scss';
10 |
11 | export default function SidebarLeft() {
12 | return <>
13 | {/* Sidebar Left */}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | >;
23 | }
24 |
--------------------------------------------------------------------------------
/src/layout/header/sidebarRight.js:
--------------------------------------------------------------------------------
1 | //styles
2 | import styles from './styles.module.scss';
3 |
4 | //redux
5 | import { useSelector } from 'react-redux';
6 |
7 | //services
8 | import { useGetGithubUserByNameQuery } from '@/services/users';
9 |
10 | export default function SidebarRight() {
11 |
12 | const { search } = useSelector(state => state.users);
13 | const { data } = useGetGithubUserByNameQuery(search)
14 |
15 | return <>
16 | {/* Sidebar Right */}
17 |
18 |
{data?.login}
19 |
25 |
26 | >;
27 | }
28 |
--------------------------------------------------------------------------------
/src/layout/header/styles.module.scss:
--------------------------------------------------------------------------------
1 | @import "@/styles/_variables";
2 |
3 | .header {
4 | background-color: #1f262f;
5 | position: sticky;
6 | top: 0;
7 | z-index: 9999;
8 | box-shadow: 0px 1px 20px rgba(0, 0, 0, 0.1);
9 |
10 | section {
11 | height: 60px;
12 | display: flex;
13 | align-items: center;
14 | justify-content: space-between;
15 | }
16 |
17 | .sidebar__left {
18 | display: flex;
19 | align-items: center;
20 |
21 | .logo {
22 | cursor: pointer;
23 | }
24 |
25 | nav.navigation {
26 | display: flex;
27 | gap: 1.5rem;
28 | a {
29 | font-weight: 600;
30 | font-size: 14px;
31 | line-height: 17px;
32 | color: #ffffff;
33 | }
34 | }
35 |
36 | .hamburger__icon {
37 | display: none;
38 | width: 24px;
39 | cursor: pointer;
40 | margin-right: 5px;
41 |
42 | svg {
43 | color: #fff;
44 | }
45 | }
46 | }
47 |
48 | .sidebar__right {
49 | display: flex;
50 | align-items: center;
51 | gap: 10px;
52 | color: #fff;
53 | font-size: 1.5rem;
54 | font-weight: bold;
55 | img {
56 | width: 40px;
57 | height: 40px;
58 | border-radius: 50%;
59 | }
60 | }
61 | }
62 |
63 | .mobile__menu {
64 | width: 100%;
65 | background-color: $bg-color_2;
66 | margin-bottom: 20px;
67 | }
68 |
69 | @media only screen and (min-width: 951px) {
70 | .mobile__menu {
71 | display: none;
72 | }
73 | }
74 |
75 | @media only screen and (max-width: 950px) {
76 | .header .sidebar__left nav.navigation {
77 | display: none;
78 | }
79 |
80 | .header .sidebar__left .serach__box {
81 | display: none;
82 | }
83 |
84 | .header .sidebar__left .hamburger__icon {
85 | display: block;
86 | }
87 |
88 | .mobile__menu {
89 | padding-top: 20px;
90 | padding-bottom: 20px;
91 | }
92 |
93 | .mobile__menu .navigation {
94 | display: flex;
95 | flex-direction: column;
96 | justify-items: center;
97 |
98 | a {
99 | background-color: #1f262f;
100 | margin-top: 10px;
101 | padding: 10px;
102 | border-radius: 20px;
103 | text-align: center;
104 | }
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/src/layout/info/index.js:
--------------------------------------------------------------------------------
1 | //core
2 | import React, { useEffect } from "react";
3 |
4 | //styles
5 | import styles from './styles.module.scss'
6 |
7 | //services
8 | import { useGetRateLimitQuery } from "@/services/rate";
9 |
10 | //icons
11 | import { StarIcon } from "@/icons";
12 |
13 | export default function Info() {
14 |
15 | const { data, refetch } = useGetRateLimitQuery();
16 |
17 | useEffect(() => {
18 | refetch();
19 | })
20 |
21 | let remaining = data?.rate?.remaining;
22 | let limit = data?.rate?.limit;
23 |
24 | return (<>
25 |
35 | >);
36 | }
37 |
--------------------------------------------------------------------------------
/src/layout/info/styles.module.scss:
--------------------------------------------------------------------------------
1 | @import "@/styles/_variables";
2 |
3 | .header {
4 | background-color: #ea5455;
5 | color: #fff;
6 | font-size: 1.5rem;
7 |
8 | section {
9 | height: 50px;
10 | display: flex;
11 | justify-content: space-between;
12 | align-items: center;
13 | }
14 |
15 | .rate {
16 | font-weight: normal;
17 | opacity: 0.5;
18 | }
19 |
20 | .star_github_btn {
21 | background-color: #efefef;
22 | padding: 5px 10px;
23 | border-radius: 10px;
24 | display: flex;
25 | align-items: center;
26 | gap: 0.5rem;
27 | transition: all 0.1s;
28 |
29 | &:hover {
30 | transform: scale(1.1);
31 | svg {
32 | fill: $primary-color;
33 | }
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/pages/_app.js:
--------------------------------------------------------------------------------
1 | //styles
2 | import '@/styles/globals.scss'
3 |
4 | //components
5 | import Header from '@/layout/header'
6 | import Info from '@/layout/info';
7 | import Footer from '@/layout/footer';
8 |
9 | //redux
10 | import { Provider } from 'react-redux'
11 | import { store } from '@/redux/store'
12 |
13 | //next
14 | import Head from 'next/head';
15 |
16 | export default function App({ Component, pageProps }) {
17 | return (
18 | <>
19 |
20 | Github Insight
21 |
22 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | >
35 | )
36 | }
37 |
--------------------------------------------------------------------------------
/src/pages/_document.js:
--------------------------------------------------------------------------------
1 | import { Html, Head, Main, NextScript } from 'next/document'
2 |
3 | export default function Document() {
4 | return (
5 |
6 |
8 |
9 |
10 |
11 |
12 | )
13 | }
14 |
--------------------------------------------------------------------------------
/src/pages/api/followers.js:
--------------------------------------------------------------------------------
1 | const followers = [
2 | {
3 | "login": "esin",
4 | "id": 69767,
5 | "node_id": "MDQ6VXNlcjY5NzY3",
6 | "avatar_url": "https://avatars.githubusercontent.com/u/69767?v=4",
7 | "gravatar_id": "",
8 | "url": "https://api.github.com/users/esin",
9 | "html_url": "https://github.com/esin",
10 | "followers_url": "https://api.github.com/users/esin/followers",
11 | "following_url": "https://api.github.com/users/esin/following{/other_user}",
12 | "gists_url": "https://api.github.com/users/esin/gists{/gist_id}",
13 | "starred_url": "https://api.github.com/users/esin/starred{/owner}{/repo}",
14 | "subscriptions_url": "https://api.github.com/users/esin/subscriptions",
15 | "organizations_url": "https://api.github.com/users/esin/orgs",
16 | "repos_url": "https://api.github.com/users/esin/repos",
17 | "events_url": "https://api.github.com/users/esin/events{/privacy}",
18 | "received_events_url": "https://api.github.com/users/esin/received_events",
19 | "type": "User",
20 | "site_admin": false
21 | },
22 | {
23 | "login": "codesignist",
24 | "id": 1472881,
25 | "node_id": "MDQ6VXNlcjE0NzI4ODE=",
26 | "avatar_url": "https://avatars.githubusercontent.com/u/1472881?v=4",
27 | "gravatar_id": "",
28 | "url": "https://api.github.com/users/codesignist",
29 | "html_url": "https://github.com/codesignist",
30 | "followers_url": "https://api.github.com/users/codesignist/followers",
31 | "following_url": "https://api.github.com/users/codesignist/following{/other_user}",
32 | "gists_url": "https://api.github.com/users/codesignist/gists{/gist_id}",
33 | "starred_url": "https://api.github.com/users/codesignist/starred{/owner}{/repo}",
34 | "subscriptions_url": "https://api.github.com/users/codesignist/subscriptions",
35 | "organizations_url": "https://api.github.com/users/codesignist/orgs",
36 | "repos_url": "https://api.github.com/users/codesignist/repos",
37 | "events_url": "https://api.github.com/users/codesignist/events{/privacy}",
38 | "received_events_url": "https://api.github.com/users/codesignist/received_events",
39 | "type": "User",
40 | "site_admin": false
41 | },
42 | {
43 | "login": "gamemann",
44 | "id": 6509565,
45 | "node_id": "MDQ6VXNlcjY1MDk1NjU=",
46 | "avatar_url": "https://avatars.githubusercontent.com/u/6509565?v=4",
47 | "gravatar_id": "",
48 | "url": "https://api.github.com/users/gamemann",
49 | "html_url": "https://github.com/gamemann",
50 | "followers_url": "https://api.github.com/users/gamemann/followers",
51 | "following_url": "https://api.github.com/users/gamemann/following{/other_user}",
52 | "gists_url": "https://api.github.com/users/gamemann/gists{/gist_id}",
53 | "starred_url": "https://api.github.com/users/gamemann/starred{/owner}{/repo}",
54 | "subscriptions_url": "https://api.github.com/users/gamemann/subscriptions",
55 | "organizations_url": "https://api.github.com/users/gamemann/orgs",
56 | "repos_url": "https://api.github.com/users/gamemann/repos",
57 | "events_url": "https://api.github.com/users/gamemann/events{/privacy}",
58 | "received_events_url": "https://api.github.com/users/gamemann/received_events",
59 | "type": "User",
60 | "site_admin": false
61 | },
62 | {
63 | "login": "sametcodes",
64 | "id": 9467273,
65 | "node_id": "MDQ6VXNlcjk0NjcyNzM=",
66 | "avatar_url": "https://avatars.githubusercontent.com/u/9467273?v=4",
67 | "gravatar_id": "",
68 | "url": "https://api.github.com/users/sametcodes",
69 | "html_url": "https://github.com/sametcodes",
70 | "followers_url": "https://api.github.com/users/sametcodes/followers",
71 | "following_url": "https://api.github.com/users/sametcodes/following{/other_user}",
72 | "gists_url": "https://api.github.com/users/sametcodes/gists{/gist_id}",
73 | "starred_url": "https://api.github.com/users/sametcodes/starred{/owner}{/repo}",
74 | "subscriptions_url": "https://api.github.com/users/sametcodes/subscriptions",
75 | "organizations_url": "https://api.github.com/users/sametcodes/orgs",
76 | "repos_url": "https://api.github.com/users/sametcodes/repos",
77 | "events_url": "https://api.github.com/users/sametcodes/events{/privacy}",
78 | "received_events_url": "https://api.github.com/users/sametcodes/received_events",
79 | "type": "User",
80 | "site_admin": false
81 | },
82 | {
83 | "login": "ekurt",
84 | "id": 11046289,
85 | "node_id": "MDQ6VXNlcjExMDQ2Mjg5",
86 | "avatar_url": "https://avatars.githubusercontent.com/u/11046289?v=4",
87 | "gravatar_id": "",
88 | "url": "https://api.github.com/users/ekurt",
89 | "html_url": "https://github.com/ekurt",
90 | "followers_url": "https://api.github.com/users/ekurt/followers",
91 | "following_url": "https://api.github.com/users/ekurt/following{/other_user}",
92 | "gists_url": "https://api.github.com/users/ekurt/gists{/gist_id}",
93 | "starred_url": "https://api.github.com/users/ekurt/starred{/owner}{/repo}",
94 | "subscriptions_url": "https://api.github.com/users/ekurt/subscriptions",
95 | "organizations_url": "https://api.github.com/users/ekurt/orgs",
96 | "repos_url": "https://api.github.com/users/ekurt/repos",
97 | "events_url": "https://api.github.com/users/ekurt/events{/privacy}",
98 | "received_events_url": "https://api.github.com/users/ekurt/received_events",
99 | "type": "User",
100 | "site_admin": false
101 | },
102 | {
103 | "login": "ademkocamaz",
104 | "id": 12304649,
105 | "node_id": "MDQ6VXNlcjEyMzA0NjQ5",
106 | "avatar_url": "https://avatars.githubusercontent.com/u/12304649?v=4",
107 | "gravatar_id": "",
108 | "url": "https://api.github.com/users/ademkocamaz",
109 | "html_url": "https://github.com/ademkocamaz",
110 | "followers_url": "https://api.github.com/users/ademkocamaz/followers",
111 | "following_url": "https://api.github.com/users/ademkocamaz/following{/other_user}",
112 | "gists_url": "https://api.github.com/users/ademkocamaz/gists{/gist_id}",
113 | "starred_url": "https://api.github.com/users/ademkocamaz/starred{/owner}{/repo}",
114 | "subscriptions_url": "https://api.github.com/users/ademkocamaz/subscriptions",
115 | "organizations_url": "https://api.github.com/users/ademkocamaz/orgs",
116 | "repos_url": "https://api.github.com/users/ademkocamaz/repos",
117 | "events_url": "https://api.github.com/users/ademkocamaz/events{/privacy}",
118 | "received_events_url": "https://api.github.com/users/ademkocamaz/received_events",
119 | "type": "User",
120 | "site_admin": false
121 | },
122 | {
123 | "login": "maxbyz",
124 | "id": 13717208,
125 | "node_id": "MDQ6VXNlcjEzNzE3MjA4",
126 | "avatar_url": "https://avatars.githubusercontent.com/u/13717208?v=4",
127 | "gravatar_id": "",
128 | "url": "https://api.github.com/users/maxbyz",
129 | "html_url": "https://github.com/maxbyz",
130 | "followers_url": "https://api.github.com/users/maxbyz/followers",
131 | "following_url": "https://api.github.com/users/maxbyz/following{/other_user}",
132 | "gists_url": "https://api.github.com/users/maxbyz/gists{/gist_id}",
133 | "starred_url": "https://api.github.com/users/maxbyz/starred{/owner}{/repo}",
134 | "subscriptions_url": "https://api.github.com/users/maxbyz/subscriptions",
135 | "organizations_url": "https://api.github.com/users/maxbyz/orgs",
136 | "repos_url": "https://api.github.com/users/maxbyz/repos",
137 | "events_url": "https://api.github.com/users/maxbyz/events{/privacy}",
138 | "received_events_url": "https://api.github.com/users/maxbyz/received_events",
139 | "type": "User",
140 | "site_admin": false
141 | },
142 | {
143 | "login": "AYIDouble",
144 | "id": 18186995,
145 | "node_id": "MDQ6VXNlcjE4MTg2OTk1",
146 | "avatar_url": "https://avatars.githubusercontent.com/u/18186995?v=4",
147 | "gravatar_id": "",
148 | "url": "https://api.github.com/users/AYIDouble",
149 | "html_url": "https://github.com/AYIDouble",
150 | "followers_url": "https://api.github.com/users/AYIDouble/followers",
151 | "following_url": "https://api.github.com/users/AYIDouble/following{/other_user}",
152 | "gists_url": "https://api.github.com/users/AYIDouble/gists{/gist_id}",
153 | "starred_url": "https://api.github.com/users/AYIDouble/starred{/owner}{/repo}",
154 | "subscriptions_url": "https://api.github.com/users/AYIDouble/subscriptions",
155 | "organizations_url": "https://api.github.com/users/AYIDouble/orgs",
156 | "repos_url": "https://api.github.com/users/AYIDouble/repos",
157 | "events_url": "https://api.github.com/users/AYIDouble/events{/privacy}",
158 | "received_events_url": "https://api.github.com/users/AYIDouble/received_events",
159 | "type": "User",
160 | "site_admin": false
161 | },
162 | {
163 | "login": "veyselkartalmis",
164 | "id": 19537228,
165 | "node_id": "MDQ6VXNlcjE5NTM3MjI4",
166 | "avatar_url": "https://avatars.githubusercontent.com/u/19537228?v=4",
167 | "gravatar_id": "",
168 | "url": "https://api.github.com/users/veyselkartalmis",
169 | "html_url": "https://github.com/veyselkartalmis",
170 | "followers_url": "https://api.github.com/users/veyselkartalmis/followers",
171 | "following_url": "https://api.github.com/users/veyselkartalmis/following{/other_user}",
172 | "gists_url": "https://api.github.com/users/veyselkartalmis/gists{/gist_id}",
173 | "starred_url": "https://api.github.com/users/veyselkartalmis/starred{/owner}{/repo}",
174 | "subscriptions_url": "https://api.github.com/users/veyselkartalmis/subscriptions",
175 | "organizations_url": "https://api.github.com/users/veyselkartalmis/orgs",
176 | "repos_url": "https://api.github.com/users/veyselkartalmis/repos",
177 | "events_url": "https://api.github.com/users/veyselkartalmis/events{/privacy}",
178 | "received_events_url": "https://api.github.com/users/veyselkartalmis/received_events",
179 | "type": "User",
180 | "site_admin": false
181 | },
182 | {
183 | "login": "Umut-D",
184 | "id": 24829576,
185 | "node_id": "MDQ6VXNlcjI0ODI5NTc2",
186 | "avatar_url": "https://avatars.githubusercontent.com/u/24829576?v=4",
187 | "gravatar_id": "",
188 | "url": "https://api.github.com/users/Umut-D",
189 | "html_url": "https://github.com/Umut-D",
190 | "followers_url": "https://api.github.com/users/Umut-D/followers",
191 | "following_url": "https://api.github.com/users/Umut-D/following{/other_user}",
192 | "gists_url": "https://api.github.com/users/Umut-D/gists{/gist_id}",
193 | "starred_url": "https://api.github.com/users/Umut-D/starred{/owner}{/repo}",
194 | "subscriptions_url": "https://api.github.com/users/Umut-D/subscriptions",
195 | "organizations_url": "https://api.github.com/users/Umut-D/orgs",
196 | "repos_url": "https://api.github.com/users/Umut-D/repos",
197 | "events_url": "https://api.github.com/users/Umut-D/events{/privacy}",
198 | "received_events_url": "https://api.github.com/users/Umut-D/received_events",
199 | "type": "User",
200 | "site_admin": false
201 | },
202 | {
203 | "login": "mmertpolat",
204 | "id": 24900500,
205 | "node_id": "MDQ6VXNlcjI0OTAwNTAw",
206 | "avatar_url": "https://avatars.githubusercontent.com/u/24900500?v=4",
207 | "gravatar_id": "",
208 | "url": "https://api.github.com/users/mmertpolat",
209 | "html_url": "https://github.com/mmertpolat",
210 | "followers_url": "https://api.github.com/users/mmertpolat/followers",
211 | "following_url": "https://api.github.com/users/mmertpolat/following{/other_user}",
212 | "gists_url": "https://api.github.com/users/mmertpolat/gists{/gist_id}",
213 | "starred_url": "https://api.github.com/users/mmertpolat/starred{/owner}{/repo}",
214 | "subscriptions_url": "https://api.github.com/users/mmertpolat/subscriptions",
215 | "organizations_url": "https://api.github.com/users/mmertpolat/orgs",
216 | "repos_url": "https://api.github.com/users/mmertpolat/repos",
217 | "events_url": "https://api.github.com/users/mmertpolat/events{/privacy}",
218 | "received_events_url": "https://api.github.com/users/mmertpolat/received_events",
219 | "type": "User",
220 | "site_admin": false
221 | },
222 | {
223 | "login": "vjanz",
224 | "id": 25842655,
225 | "node_id": "MDQ6VXNlcjI1ODQyNjU1",
226 | "avatar_url": "https://avatars.githubusercontent.com/u/25842655?v=4",
227 | "gravatar_id": "",
228 | "url": "https://api.github.com/users/vjanz",
229 | "html_url": "https://github.com/vjanz",
230 | "followers_url": "https://api.github.com/users/vjanz/followers",
231 | "following_url": "https://api.github.com/users/vjanz/following{/other_user}",
232 | "gists_url": "https://api.github.com/users/vjanz/gists{/gist_id}",
233 | "starred_url": "https://api.github.com/users/vjanz/starred{/owner}{/repo}",
234 | "subscriptions_url": "https://api.github.com/users/vjanz/subscriptions",
235 | "organizations_url": "https://api.github.com/users/vjanz/orgs",
236 | "repos_url": "https://api.github.com/users/vjanz/repos",
237 | "events_url": "https://api.github.com/users/vjanz/events{/privacy}",
238 | "received_events_url": "https://api.github.com/users/vjanz/received_events",
239 | "type": "User",
240 | "site_admin": false
241 | },
242 | {
243 | "login": "cnsbelirdi",
244 | "id": 31245395,
245 | "node_id": "MDQ6VXNlcjMxMjQ1Mzk1",
246 | "avatar_url": "https://avatars.githubusercontent.com/u/31245395?v=4",
247 | "gravatar_id": "",
248 | "url": "https://api.github.com/users/cnsbelirdi",
249 | "html_url": "https://github.com/cnsbelirdi",
250 | "followers_url": "https://api.github.com/users/cnsbelirdi/followers",
251 | "following_url": "https://api.github.com/users/cnsbelirdi/following{/other_user}",
252 | "gists_url": "https://api.github.com/users/cnsbelirdi/gists{/gist_id}",
253 | "starred_url": "https://api.github.com/users/cnsbelirdi/starred{/owner}{/repo}",
254 | "subscriptions_url": "https://api.github.com/users/cnsbelirdi/subscriptions",
255 | "organizations_url": "https://api.github.com/users/cnsbelirdi/orgs",
256 | "repos_url": "https://api.github.com/users/cnsbelirdi/repos",
257 | "events_url": "https://api.github.com/users/cnsbelirdi/events{/privacy}",
258 | "received_events_url": "https://api.github.com/users/cnsbelirdi/received_events",
259 | "type": "User",
260 | "site_admin": false
261 | },
262 | {
263 | "login": "fcokur",
264 | "id": 36133366,
265 | "node_id": "MDQ6VXNlcjM2MTMzMzY2",
266 | "avatar_url": "https://avatars.githubusercontent.com/u/36133366?v=4",
267 | "gravatar_id": "",
268 | "url": "https://api.github.com/users/fcokur",
269 | "html_url": "https://github.com/fcokur",
270 | "followers_url": "https://api.github.com/users/fcokur/followers",
271 | "following_url": "https://api.github.com/users/fcokur/following{/other_user}",
272 | "gists_url": "https://api.github.com/users/fcokur/gists{/gist_id}",
273 | "starred_url": "https://api.github.com/users/fcokur/starred{/owner}{/repo}",
274 | "subscriptions_url": "https://api.github.com/users/fcokur/subscriptions",
275 | "organizations_url": "https://api.github.com/users/fcokur/orgs",
276 | "repos_url": "https://api.github.com/users/fcokur/repos",
277 | "events_url": "https://api.github.com/users/fcokur/events{/privacy}",
278 | "received_events_url": "https://api.github.com/users/fcokur/received_events",
279 | "type": "User",
280 | "site_admin": false
281 | },
282 | {
283 | "login": "kulikov-dev",
284 | "id": 40471760,
285 | "node_id": "MDQ6VXNlcjQwNDcxNzYw",
286 | "avatar_url": "https://avatars.githubusercontent.com/u/40471760?v=4",
287 | "gravatar_id": "",
288 | "url": "https://api.github.com/users/kulikov-dev",
289 | "html_url": "https://github.com/kulikov-dev",
290 | "followers_url": "https://api.github.com/users/kulikov-dev/followers",
291 | "following_url": "https://api.github.com/users/kulikov-dev/following{/other_user}",
292 | "gists_url": "https://api.github.com/users/kulikov-dev/gists{/gist_id}",
293 | "starred_url": "https://api.github.com/users/kulikov-dev/starred{/owner}{/repo}",
294 | "subscriptions_url": "https://api.github.com/users/kulikov-dev/subscriptions",
295 | "organizations_url": "https://api.github.com/users/kulikov-dev/orgs",
296 | "repos_url": "https://api.github.com/users/kulikov-dev/repos",
297 | "events_url": "https://api.github.com/users/kulikov-dev/events{/privacy}",
298 | "received_events_url": "https://api.github.com/users/kulikov-dev/received_events",
299 | "type": "User",
300 | "site_admin": false
301 | },
302 | {
303 | "login": "omerozceylan",
304 | "id": 42185275,
305 | "node_id": "MDQ6VXNlcjQyMTg1Mjc1",
306 | "avatar_url": "https://avatars.githubusercontent.com/u/42185275?v=4",
307 | "gravatar_id": "",
308 | "url": "https://api.github.com/users/omerozceylan",
309 | "html_url": "https://github.com/omerozceylan",
310 | "followers_url": "https://api.github.com/users/omerozceylan/followers",
311 | "following_url": "https://api.github.com/users/omerozceylan/following{/other_user}",
312 | "gists_url": "https://api.github.com/users/omerozceylan/gists{/gist_id}",
313 | "starred_url": "https://api.github.com/users/omerozceylan/starred{/owner}{/repo}",
314 | "subscriptions_url": "https://api.github.com/users/omerozceylan/subscriptions",
315 | "organizations_url": "https://api.github.com/users/omerozceylan/orgs",
316 | "repos_url": "https://api.github.com/users/omerozceylan/repos",
317 | "events_url": "https://api.github.com/users/omerozceylan/events{/privacy}",
318 | "received_events_url": "https://api.github.com/users/omerozceylan/received_events",
319 | "type": "User",
320 | "site_admin": false
321 | },
322 | {
323 | "login": "0fatihyildiz",
324 | "id": 47571500,
325 | "node_id": "MDQ6VXNlcjQ3NTcxNTAw",
326 | "avatar_url": "https://avatars.githubusercontent.com/u/47571500?v=4",
327 | "gravatar_id": "",
328 | "url": "https://api.github.com/users/0fatihyildiz",
329 | "html_url": "https://github.com/0fatihyildiz",
330 | "followers_url": "https://api.github.com/users/0fatihyildiz/followers",
331 | "following_url": "https://api.github.com/users/0fatihyildiz/following{/other_user}",
332 | "gists_url": "https://api.github.com/users/0fatihyildiz/gists{/gist_id}",
333 | "starred_url": "https://api.github.com/users/0fatihyildiz/starred{/owner}{/repo}",
334 | "subscriptions_url": "https://api.github.com/users/0fatihyildiz/subscriptions",
335 | "organizations_url": "https://api.github.com/users/0fatihyildiz/orgs",
336 | "repos_url": "https://api.github.com/users/0fatihyildiz/repos",
337 | "events_url": "https://api.github.com/users/0fatihyildiz/events{/privacy}",
338 | "received_events_url": "https://api.github.com/users/0fatihyildiz/received_events",
339 | "type": "User",
340 | "site_admin": false
341 | },
342 | {
343 | "login": "ilkay-alti",
344 | "id": 48162731,
345 | "node_id": "MDQ6VXNlcjQ4MTYyNzMx",
346 | "avatar_url": "https://avatars.githubusercontent.com/u/48162731?v=4",
347 | "gravatar_id": "",
348 | "url": "https://api.github.com/users/ilkay-alti",
349 | "html_url": "https://github.com/ilkay-alti",
350 | "followers_url": "https://api.github.com/users/ilkay-alti/followers",
351 | "following_url": "https://api.github.com/users/ilkay-alti/following{/other_user}",
352 | "gists_url": "https://api.github.com/users/ilkay-alti/gists{/gist_id}",
353 | "starred_url": "https://api.github.com/users/ilkay-alti/starred{/owner}{/repo}",
354 | "subscriptions_url": "https://api.github.com/users/ilkay-alti/subscriptions",
355 | "organizations_url": "https://api.github.com/users/ilkay-alti/orgs",
356 | "repos_url": "https://api.github.com/users/ilkay-alti/repos",
357 | "events_url": "https://api.github.com/users/ilkay-alti/events{/privacy}",
358 | "received_events_url": "https://api.github.com/users/ilkay-alti/received_events",
359 | "type": "User",
360 | "site_admin": false
361 | },
362 | {
363 | "login": "batuhan-kaya",
364 | "id": 50137562,
365 | "node_id": "MDQ6VXNlcjUwMTM3NTYy",
366 | "avatar_url": "https://avatars.githubusercontent.com/u/50137562?v=4",
367 | "gravatar_id": "",
368 | "url": "https://api.github.com/users/batuhan-kaya",
369 | "html_url": "https://github.com/batuhan-kaya",
370 | "followers_url": "https://api.github.com/users/batuhan-kaya/followers",
371 | "following_url": "https://api.github.com/users/batuhan-kaya/following{/other_user}",
372 | "gists_url": "https://api.github.com/users/batuhan-kaya/gists{/gist_id}",
373 | "starred_url": "https://api.github.com/users/batuhan-kaya/starred{/owner}{/repo}",
374 | "subscriptions_url": "https://api.github.com/users/batuhan-kaya/subscriptions",
375 | "organizations_url": "https://api.github.com/users/batuhan-kaya/orgs",
376 | "repos_url": "https://api.github.com/users/batuhan-kaya/repos",
377 | "events_url": "https://api.github.com/users/batuhan-kaya/events{/privacy}",
378 | "received_events_url": "https://api.github.com/users/batuhan-kaya/received_events",
379 | "type": "User",
380 | "site_admin": false
381 | },
382 | {
383 | "login": "fatihtuzunn",
384 | "id": 55248838,
385 | "node_id": "MDQ6VXNlcjU1MjQ4ODM4",
386 | "avatar_url": "https://avatars.githubusercontent.com/u/55248838?v=4",
387 | "gravatar_id": "",
388 | "url": "https://api.github.com/users/fatihtuzunn",
389 | "html_url": "https://github.com/fatihtuzunn",
390 | "followers_url": "https://api.github.com/users/fatihtuzunn/followers",
391 | "following_url": "https://api.github.com/users/fatihtuzunn/following{/other_user}",
392 | "gists_url": "https://api.github.com/users/fatihtuzunn/gists{/gist_id}",
393 | "starred_url": "https://api.github.com/users/fatihtuzunn/starred{/owner}{/repo}",
394 | "subscriptions_url": "https://api.github.com/users/fatihtuzunn/subscriptions",
395 | "organizations_url": "https://api.github.com/users/fatihtuzunn/orgs",
396 | "repos_url": "https://api.github.com/users/fatihtuzunn/repos",
397 | "events_url": "https://api.github.com/users/fatihtuzunn/events{/privacy}",
398 | "received_events_url": "https://api.github.com/users/fatihtuzunn/received_events",
399 | "type": "User",
400 | "site_admin": false
401 | },
402 | {
403 | "login": "birkaany",
404 | "id": 59147411,
405 | "node_id": "MDQ6VXNlcjU5MTQ3NDEx",
406 | "avatar_url": "https://avatars.githubusercontent.com/u/59147411?v=4",
407 | "gravatar_id": "",
408 | "url": "https://api.github.com/users/birkaany",
409 | "html_url": "https://github.com/birkaany",
410 | "followers_url": "https://api.github.com/users/birkaany/followers",
411 | "following_url": "https://api.github.com/users/birkaany/following{/other_user}",
412 | "gists_url": "https://api.github.com/users/birkaany/gists{/gist_id}",
413 | "starred_url": "https://api.github.com/users/birkaany/starred{/owner}{/repo}",
414 | "subscriptions_url": "https://api.github.com/users/birkaany/subscriptions",
415 | "organizations_url": "https://api.github.com/users/birkaany/orgs",
416 | "repos_url": "https://api.github.com/users/birkaany/repos",
417 | "events_url": "https://api.github.com/users/birkaany/events{/privacy}",
418 | "received_events_url": "https://api.github.com/users/birkaany/received_events",
419 | "type": "User",
420 | "site_admin": false
421 | },
422 | {
423 | "login": "webmucidi",
424 | "id": 59727557,
425 | "node_id": "MDQ6VXNlcjU5NzI3NTU3",
426 | "avatar_url": "https://avatars.githubusercontent.com/u/59727557?v=4",
427 | "gravatar_id": "",
428 | "url": "https://api.github.com/users/webmucidi",
429 | "html_url": "https://github.com/webmucidi",
430 | "followers_url": "https://api.github.com/users/webmucidi/followers",
431 | "following_url": "https://api.github.com/users/webmucidi/following{/other_user}",
432 | "gists_url": "https://api.github.com/users/webmucidi/gists{/gist_id}",
433 | "starred_url": "https://api.github.com/users/webmucidi/starred{/owner}{/repo}",
434 | "subscriptions_url": "https://api.github.com/users/webmucidi/subscriptions",
435 | "organizations_url": "https://api.github.com/users/webmucidi/orgs",
436 | "repos_url": "https://api.github.com/users/webmucidi/repos",
437 | "events_url": "https://api.github.com/users/webmucidi/events{/privacy}",
438 | "received_events_url": "https://api.github.com/users/webmucidi/received_events",
439 | "type": "User",
440 | "site_admin": false
441 | },
442 | {
443 | "login": "oguzergul",
444 | "id": 60192962,
445 | "node_id": "MDQ6VXNlcjYwMTkyOTYy",
446 | "avatar_url": "https://avatars.githubusercontent.com/u/60192962?v=4",
447 | "gravatar_id": "",
448 | "url": "https://api.github.com/users/oguzergul",
449 | "html_url": "https://github.com/oguzergul",
450 | "followers_url": "https://api.github.com/users/oguzergul/followers",
451 | "following_url": "https://api.github.com/users/oguzergul/following{/other_user}",
452 | "gists_url": "https://api.github.com/users/oguzergul/gists{/gist_id}",
453 | "starred_url": "https://api.github.com/users/oguzergul/starred{/owner}{/repo}",
454 | "subscriptions_url": "https://api.github.com/users/oguzergul/subscriptions",
455 | "organizations_url": "https://api.github.com/users/oguzergul/orgs",
456 | "repos_url": "https://api.github.com/users/oguzergul/repos",
457 | "events_url": "https://api.github.com/users/oguzergul/events{/privacy}",
458 | "received_events_url": "https://api.github.com/users/oguzergul/received_events",
459 | "type": "User",
460 | "site_admin": false
461 | },
462 | {
463 | "login": "sedaklnc",
464 | "id": 63013903,
465 | "node_id": "MDQ6VXNlcjYzMDEzOTAz",
466 | "avatar_url": "https://avatars.githubusercontent.com/u/63013903?v=4",
467 | "gravatar_id": "",
468 | "url": "https://api.github.com/users/sedaklnc",
469 | "html_url": "https://github.com/sedaklnc",
470 | "followers_url": "https://api.github.com/users/sedaklnc/followers",
471 | "following_url": "https://api.github.com/users/sedaklnc/following{/other_user}",
472 | "gists_url": "https://api.github.com/users/sedaklnc/gists{/gist_id}",
473 | "starred_url": "https://api.github.com/users/sedaklnc/starred{/owner}{/repo}",
474 | "subscriptions_url": "https://api.github.com/users/sedaklnc/subscriptions",
475 | "organizations_url": "https://api.github.com/users/sedaklnc/orgs",
476 | "repos_url": "https://api.github.com/users/sedaklnc/repos",
477 | "events_url": "https://api.github.com/users/sedaklnc/events{/privacy}",
478 | "received_events_url": "https://api.github.com/users/sedaklnc/received_events",
479 | "type": "User",
480 | "site_admin": false
481 | },
482 | {
483 | "login": "ibrhmkurt",
484 | "id": 64909651,
485 | "node_id": "MDQ6VXNlcjY0OTA5NjUx",
486 | "avatar_url": "https://avatars.githubusercontent.com/u/64909651?v=4",
487 | "gravatar_id": "",
488 | "url": "https://api.github.com/users/ibrhmkurt",
489 | "html_url": "https://github.com/ibrhmkurt",
490 | "followers_url": "https://api.github.com/users/ibrhmkurt/followers",
491 | "following_url": "https://api.github.com/users/ibrhmkurt/following{/other_user}",
492 | "gists_url": "https://api.github.com/users/ibrhmkurt/gists{/gist_id}",
493 | "starred_url": "https://api.github.com/users/ibrhmkurt/starred{/owner}{/repo}",
494 | "subscriptions_url": "https://api.github.com/users/ibrhmkurt/subscriptions",
495 | "organizations_url": "https://api.github.com/users/ibrhmkurt/orgs",
496 | "repos_url": "https://api.github.com/users/ibrhmkurt/repos",
497 | "events_url": "https://api.github.com/users/ibrhmkurt/events{/privacy}",
498 | "received_events_url": "https://api.github.com/users/ibrhmkurt/received_events",
499 | "type": "User",
500 | "site_admin": false
501 | },
502 | {
503 | "login": "can101",
504 | "id": 68447137,
505 | "node_id": "MDQ6VXNlcjY4NDQ3MTM3",
506 | "avatar_url": "https://avatars.githubusercontent.com/u/68447137?v=4",
507 | "gravatar_id": "",
508 | "url": "https://api.github.com/users/can101",
509 | "html_url": "https://github.com/can101",
510 | "followers_url": "https://api.github.com/users/can101/followers",
511 | "following_url": "https://api.github.com/users/can101/following{/other_user}",
512 | "gists_url": "https://api.github.com/users/can101/gists{/gist_id}",
513 | "starred_url": "https://api.github.com/users/can101/starred{/owner}{/repo}",
514 | "subscriptions_url": "https://api.github.com/users/can101/subscriptions",
515 | "organizations_url": "https://api.github.com/users/can101/orgs",
516 | "repos_url": "https://api.github.com/users/can101/repos",
517 | "events_url": "https://api.github.com/users/can101/events{/privacy}",
518 | "received_events_url": "https://api.github.com/users/can101/received_events",
519 | "type": "User",
520 | "site_admin": false
521 | },
522 | {
523 | "login": "ahmettaydinn",
524 | "id": 71410652,
525 | "node_id": "MDQ6VXNlcjcxNDEwNjUy",
526 | "avatar_url": "https://avatars.githubusercontent.com/u/71410652?v=4",
527 | "gravatar_id": "",
528 | "url": "https://api.github.com/users/ahmettaydinn",
529 | "html_url": "https://github.com/ahmettaydinn",
530 | "followers_url": "https://api.github.com/users/ahmettaydinn/followers",
531 | "following_url": "https://api.github.com/users/ahmettaydinn/following{/other_user}",
532 | "gists_url": "https://api.github.com/users/ahmettaydinn/gists{/gist_id}",
533 | "starred_url": "https://api.github.com/users/ahmettaydinn/starred{/owner}{/repo}",
534 | "subscriptions_url": "https://api.github.com/users/ahmettaydinn/subscriptions",
535 | "organizations_url": "https://api.github.com/users/ahmettaydinn/orgs",
536 | "repos_url": "https://api.github.com/users/ahmettaydinn/repos",
537 | "events_url": "https://api.github.com/users/ahmettaydinn/events{/privacy}",
538 | "received_events_url": "https://api.github.com/users/ahmettaydinn/received_events",
539 | "type": "User",
540 | "site_admin": false
541 | },
542 | {
543 | "login": "itszehrakaya",
544 | "id": 72206348,
545 | "node_id": "MDQ6VXNlcjcyMjA2MzQ4",
546 | "avatar_url": "https://avatars.githubusercontent.com/u/72206348?v=4",
547 | "gravatar_id": "",
548 | "url": "https://api.github.com/users/itszehrakaya",
549 | "html_url": "https://github.com/itszehrakaya",
550 | "followers_url": "https://api.github.com/users/itszehrakaya/followers",
551 | "following_url": "https://api.github.com/users/itszehrakaya/following{/other_user}",
552 | "gists_url": "https://api.github.com/users/itszehrakaya/gists{/gist_id}",
553 | "starred_url": "https://api.github.com/users/itszehrakaya/starred{/owner}{/repo}",
554 | "subscriptions_url": "https://api.github.com/users/itszehrakaya/subscriptions",
555 | "organizations_url": "https://api.github.com/users/itszehrakaya/orgs",
556 | "repos_url": "https://api.github.com/users/itszehrakaya/repos",
557 | "events_url": "https://api.github.com/users/itszehrakaya/events{/privacy}",
558 | "received_events_url": "https://api.github.com/users/itszehrakaya/received_events",
559 | "type": "User",
560 | "site_admin": false
561 | },
562 | {
563 | "login": "sahinmaral",
564 | "id": 74562862,
565 | "node_id": "MDQ6VXNlcjc0NTYyODYy",
566 | "avatar_url": "https://avatars.githubusercontent.com/u/74562862?v=4",
567 | "gravatar_id": "",
568 | "url": "https://api.github.com/users/sahinmaral",
569 | "html_url": "https://github.com/sahinmaral",
570 | "followers_url": "https://api.github.com/users/sahinmaral/followers",
571 | "following_url": "https://api.github.com/users/sahinmaral/following{/other_user}",
572 | "gists_url": "https://api.github.com/users/sahinmaral/gists{/gist_id}",
573 | "starred_url": "https://api.github.com/users/sahinmaral/starred{/owner}{/repo}",
574 | "subscriptions_url": "https://api.github.com/users/sahinmaral/subscriptions",
575 | "organizations_url": "https://api.github.com/users/sahinmaral/orgs",
576 | "repos_url": "https://api.github.com/users/sahinmaral/repos",
577 | "events_url": "https://api.github.com/users/sahinmaral/events{/privacy}",
578 | "received_events_url": "https://api.github.com/users/sahinmaral/received_events",
579 | "type": "User",
580 | "site_admin": false
581 | },
582 | {
583 | "login": "AXG-coder",
584 | "id": 74980212,
585 | "node_id": "MDQ6VXNlcjc0OTgwMjEy",
586 | "avatar_url": "https://avatars.githubusercontent.com/u/74980212?v=4",
587 | "gravatar_id": "",
588 | "url": "https://api.github.com/users/AXG-coder",
589 | "html_url": "https://github.com/AXG-coder",
590 | "followers_url": "https://api.github.com/users/AXG-coder/followers",
591 | "following_url": "https://api.github.com/users/AXG-coder/following{/other_user}",
592 | "gists_url": "https://api.github.com/users/AXG-coder/gists{/gist_id}",
593 | "starred_url": "https://api.github.com/users/AXG-coder/starred{/owner}{/repo}",
594 | "subscriptions_url": "https://api.github.com/users/AXG-coder/subscriptions",
595 | "organizations_url": "https://api.github.com/users/AXG-coder/orgs",
596 | "repos_url": "https://api.github.com/users/AXG-coder/repos",
597 | "events_url": "https://api.github.com/users/AXG-coder/events{/privacy}",
598 | "received_events_url": "https://api.github.com/users/AXG-coder/received_events",
599 | "type": "User",
600 | "site_admin": false
601 | },
602 | {
603 | "login": "ozencdurur",
604 | "id": 75950512,
605 | "node_id": "MDQ6VXNlcjc1OTUwNTEy",
606 | "avatar_url": "https://avatars.githubusercontent.com/u/75950512?v=4",
607 | "gravatar_id": "",
608 | "url": "https://api.github.com/users/ozencdurur",
609 | "html_url": "https://github.com/ozencdurur",
610 | "followers_url": "https://api.github.com/users/ozencdurur/followers",
611 | "following_url": "https://api.github.com/users/ozencdurur/following{/other_user}",
612 | "gists_url": "https://api.github.com/users/ozencdurur/gists{/gist_id}",
613 | "starred_url": "https://api.github.com/users/ozencdurur/starred{/owner}{/repo}",
614 | "subscriptions_url": "https://api.github.com/users/ozencdurur/subscriptions",
615 | "organizations_url": "https://api.github.com/users/ozencdurur/orgs",
616 | "repos_url": "https://api.github.com/users/ozencdurur/repos",
617 | "events_url": "https://api.github.com/users/ozencdurur/events{/privacy}",
618 | "received_events_url": "https://api.github.com/users/ozencdurur/received_events",
619 | "type": "User",
620 | "site_admin": false
621 | },
622 | {
623 | "login": "neslihanatasever",
624 | "id": 75980632,
625 | "node_id": "MDQ6VXNlcjc1OTgwNjMy",
626 | "avatar_url": "https://avatars.githubusercontent.com/u/75980632?v=4",
627 | "gravatar_id": "",
628 | "url": "https://api.github.com/users/neslihanatasever",
629 | "html_url": "https://github.com/neslihanatasever",
630 | "followers_url": "https://api.github.com/users/neslihanatasever/followers",
631 | "following_url": "https://api.github.com/users/neslihanatasever/following{/other_user}",
632 | "gists_url": "https://api.github.com/users/neslihanatasever/gists{/gist_id}",
633 | "starred_url": "https://api.github.com/users/neslihanatasever/starred{/owner}{/repo}",
634 | "subscriptions_url": "https://api.github.com/users/neslihanatasever/subscriptions",
635 | "organizations_url": "https://api.github.com/users/neslihanatasever/orgs",
636 | "repos_url": "https://api.github.com/users/neslihanatasever/repos",
637 | "events_url": "https://api.github.com/users/neslihanatasever/events{/privacy}",
638 | "received_events_url": "https://api.github.com/users/neslihanatasever/received_events",
639 | "type": "User",
640 | "site_admin": false
641 | },
642 | {
643 | "login": "dogukancaner",
644 | "id": 76653403,
645 | "node_id": "MDQ6VXNlcjc2NjUzNDAz",
646 | "avatar_url": "https://avatars.githubusercontent.com/u/76653403?v=4",
647 | "gravatar_id": "",
648 | "url": "https://api.github.com/users/dogukancaner",
649 | "html_url": "https://github.com/dogukancaner",
650 | "followers_url": "https://api.github.com/users/dogukancaner/followers",
651 | "following_url": "https://api.github.com/users/dogukancaner/following{/other_user}",
652 | "gists_url": "https://api.github.com/users/dogukancaner/gists{/gist_id}",
653 | "starred_url": "https://api.github.com/users/dogukancaner/starred{/owner}{/repo}",
654 | "subscriptions_url": "https://api.github.com/users/dogukancaner/subscriptions",
655 | "organizations_url": "https://api.github.com/users/dogukancaner/orgs",
656 | "repos_url": "https://api.github.com/users/dogukancaner/repos",
657 | "events_url": "https://api.github.com/users/dogukancaner/events{/privacy}",
658 | "received_events_url": "https://api.github.com/users/dogukancaner/received_events",
659 | "type": "User",
660 | "site_admin": false
661 | },
662 | {
663 | "login": "bsrakts",
664 | "id": 76904882,
665 | "node_id": "MDQ6VXNlcjc2OTA0ODgy",
666 | "avatar_url": "https://avatars.githubusercontent.com/u/76904882?v=4",
667 | "gravatar_id": "",
668 | "url": "https://api.github.com/users/bsrakts",
669 | "html_url": "https://github.com/bsrakts",
670 | "followers_url": "https://api.github.com/users/bsrakts/followers",
671 | "following_url": "https://api.github.com/users/bsrakts/following{/other_user}",
672 | "gists_url": "https://api.github.com/users/bsrakts/gists{/gist_id}",
673 | "starred_url": "https://api.github.com/users/bsrakts/starred{/owner}{/repo}",
674 | "subscriptions_url": "https://api.github.com/users/bsrakts/subscriptions",
675 | "organizations_url": "https://api.github.com/users/bsrakts/orgs",
676 | "repos_url": "https://api.github.com/users/bsrakts/repos",
677 | "events_url": "https://api.github.com/users/bsrakts/events{/privacy}",
678 | "received_events_url": "https://api.github.com/users/bsrakts/received_events",
679 | "type": "User",
680 | "site_admin": false
681 | },
682 | {
683 | "login": "ysfkblt",
684 | "id": 80647654,
685 | "node_id": "MDQ6VXNlcjgwNjQ3NjU0",
686 | "avatar_url": "https://avatars.githubusercontent.com/u/80647654?v=4",
687 | "gravatar_id": "",
688 | "url": "https://api.github.com/users/ysfkblt",
689 | "html_url": "https://github.com/ysfkblt",
690 | "followers_url": "https://api.github.com/users/ysfkblt/followers",
691 | "following_url": "https://api.github.com/users/ysfkblt/following{/other_user}",
692 | "gists_url": "https://api.github.com/users/ysfkblt/gists{/gist_id}",
693 | "starred_url": "https://api.github.com/users/ysfkblt/starred{/owner}{/repo}",
694 | "subscriptions_url": "https://api.github.com/users/ysfkblt/subscriptions",
695 | "organizations_url": "https://api.github.com/users/ysfkblt/orgs",
696 | "repos_url": "https://api.github.com/users/ysfkblt/repos",
697 | "events_url": "https://api.github.com/users/ysfkblt/events{/privacy}",
698 | "received_events_url": "https://api.github.com/users/ysfkblt/received_events",
699 | "type": "User",
700 | "site_admin": false
701 | },
702 | {
703 | "login": "Hilmi51",
704 | "id": 82928954,
705 | "node_id": "MDQ6VXNlcjgyOTI4OTU0",
706 | "avatar_url": "https://avatars.githubusercontent.com/u/82928954?v=4",
707 | "gravatar_id": "",
708 | "url": "https://api.github.com/users/Hilmi51",
709 | "html_url": "https://github.com/Hilmi51",
710 | "followers_url": "https://api.github.com/users/Hilmi51/followers",
711 | "following_url": "https://api.github.com/users/Hilmi51/following{/other_user}",
712 | "gists_url": "https://api.github.com/users/Hilmi51/gists{/gist_id}",
713 | "starred_url": "https://api.github.com/users/Hilmi51/starred{/owner}{/repo}",
714 | "subscriptions_url": "https://api.github.com/users/Hilmi51/subscriptions",
715 | "organizations_url": "https://api.github.com/users/Hilmi51/orgs",
716 | "repos_url": "https://api.github.com/users/Hilmi51/repos",
717 | "events_url": "https://api.github.com/users/Hilmi51/events{/privacy}",
718 | "received_events_url": "https://api.github.com/users/Hilmi51/received_events",
719 | "type": "User",
720 | "site_admin": false
721 | },
722 | {
723 | "login": "talhayildiz99",
724 | "id": 84921617,
725 | "node_id": "MDQ6VXNlcjg0OTIxNjE3",
726 | "avatar_url": "https://avatars.githubusercontent.com/u/84921617?v=4",
727 | "gravatar_id": "",
728 | "url": "https://api.github.com/users/talhayildiz99",
729 | "html_url": "https://github.com/talhayildiz99",
730 | "followers_url": "https://api.github.com/users/talhayildiz99/followers",
731 | "following_url": "https://api.github.com/users/talhayildiz99/following{/other_user}",
732 | "gists_url": "https://api.github.com/users/talhayildiz99/gists{/gist_id}",
733 | "starred_url": "https://api.github.com/users/talhayildiz99/starred{/owner}{/repo}",
734 | "subscriptions_url": "https://api.github.com/users/talhayildiz99/subscriptions",
735 | "organizations_url": "https://api.github.com/users/talhayildiz99/orgs",
736 | "repos_url": "https://api.github.com/users/talhayildiz99/repos",
737 | "events_url": "https://api.github.com/users/talhayildiz99/events{/privacy}",
738 | "received_events_url": "https://api.github.com/users/talhayildiz99/received_events",
739 | "type": "User",
740 | "site_admin": false
741 | },
742 | {
743 | "login": "zeraphosa",
744 | "id": 87827934,
745 | "node_id": "MDQ6VXNlcjg3ODI3OTM0",
746 | "avatar_url": "https://avatars.githubusercontent.com/u/87827934?v=4",
747 | "gravatar_id": "",
748 | "url": "https://api.github.com/users/zeraphosa",
749 | "html_url": "https://github.com/zeraphosa",
750 | "followers_url": "https://api.github.com/users/zeraphosa/followers",
751 | "following_url": "https://api.github.com/users/zeraphosa/following{/other_user}",
752 | "gists_url": "https://api.github.com/users/zeraphosa/gists{/gist_id}",
753 | "starred_url": "https://api.github.com/users/zeraphosa/starred{/owner}{/repo}",
754 | "subscriptions_url": "https://api.github.com/users/zeraphosa/subscriptions",
755 | "organizations_url": "https://api.github.com/users/zeraphosa/orgs",
756 | "repos_url": "https://api.github.com/users/zeraphosa/repos",
757 | "events_url": "https://api.github.com/users/zeraphosa/events{/privacy}",
758 | "received_events_url": "https://api.github.com/users/zeraphosa/received_events",
759 | "type": "User",
760 | "site_admin": false
761 | },
762 | {
763 | "login": "Cuuss",
764 | "id": 89050310,
765 | "node_id": "MDQ6VXNlcjg5MDUwMzEw",
766 | "avatar_url": "https://avatars.githubusercontent.com/u/89050310?v=4",
767 | "gravatar_id": "",
768 | "url": "https://api.github.com/users/Cuuss",
769 | "html_url": "https://github.com/Cuuss",
770 | "followers_url": "https://api.github.com/users/Cuuss/followers",
771 | "following_url": "https://api.github.com/users/Cuuss/following{/other_user}",
772 | "gists_url": "https://api.github.com/users/Cuuss/gists{/gist_id}",
773 | "starred_url": "https://api.github.com/users/Cuuss/starred{/owner}{/repo}",
774 | "subscriptions_url": "https://api.github.com/users/Cuuss/subscriptions",
775 | "organizations_url": "https://api.github.com/users/Cuuss/orgs",
776 | "repos_url": "https://api.github.com/users/Cuuss/repos",
777 | "events_url": "https://api.github.com/users/Cuuss/events{/privacy}",
778 | "received_events_url": "https://api.github.com/users/Cuuss/received_events",
779 | "type": "User",
780 | "site_admin": false
781 | },
782 | {
783 | "login": "FirdevsASLAN",
784 | "id": 90457387,
785 | "node_id": "MDQ6VXNlcjkwNDU3Mzg3",
786 | "avatar_url": "https://avatars.githubusercontent.com/u/90457387?v=4",
787 | "gravatar_id": "",
788 | "url": "https://api.github.com/users/FirdevsASLAN",
789 | "html_url": "https://github.com/FirdevsASLAN",
790 | "followers_url": "https://api.github.com/users/FirdevsASLAN/followers",
791 | "following_url": "https://api.github.com/users/FirdevsASLAN/following{/other_user}",
792 | "gists_url": "https://api.github.com/users/FirdevsASLAN/gists{/gist_id}",
793 | "starred_url": "https://api.github.com/users/FirdevsASLAN/starred{/owner}{/repo}",
794 | "subscriptions_url": "https://api.github.com/users/FirdevsASLAN/subscriptions",
795 | "organizations_url": "https://api.github.com/users/FirdevsASLAN/orgs",
796 | "repos_url": "https://api.github.com/users/FirdevsASLAN/repos",
797 | "events_url": "https://api.github.com/users/FirdevsASLAN/events{/privacy}",
798 | "received_events_url": "https://api.github.com/users/FirdevsASLAN/received_events",
799 | "type": "User",
800 | "site_admin": false
801 | },
802 | {
803 | "login": "yasinldev",
804 | "id": 90653146,
805 | "node_id": "MDQ6VXNlcjkwNjUzMTQ2",
806 | "avatar_url": "https://avatars.githubusercontent.com/u/90653146?v=4",
807 | "gravatar_id": "",
808 | "url": "https://api.github.com/users/yasinldev",
809 | "html_url": "https://github.com/yasinldev",
810 | "followers_url": "https://api.github.com/users/yasinldev/followers",
811 | "following_url": "https://api.github.com/users/yasinldev/following{/other_user}",
812 | "gists_url": "https://api.github.com/users/yasinldev/gists{/gist_id}",
813 | "starred_url": "https://api.github.com/users/yasinldev/starred{/owner}{/repo}",
814 | "subscriptions_url": "https://api.github.com/users/yasinldev/subscriptions",
815 | "organizations_url": "https://api.github.com/users/yasinldev/orgs",
816 | "repos_url": "https://api.github.com/users/yasinldev/repos",
817 | "events_url": "https://api.github.com/users/yasinldev/events{/privacy}",
818 | "received_events_url": "https://api.github.com/users/yasinldev/received_events",
819 | "type": "User",
820 | "site_admin": false
821 | },
822 | {
823 | "login": "eneszenler",
824 | "id": 91543268,
825 | "node_id": "U_kgDOBXTW5A",
826 | "avatar_url": "https://avatars.githubusercontent.com/u/91543268?v=4",
827 | "gravatar_id": "",
828 | "url": "https://api.github.com/users/eneszenler",
829 | "html_url": "https://github.com/eneszenler",
830 | "followers_url": "https://api.github.com/users/eneszenler/followers",
831 | "following_url": "https://api.github.com/users/eneszenler/following{/other_user}",
832 | "gists_url": "https://api.github.com/users/eneszenler/gists{/gist_id}",
833 | "starred_url": "https://api.github.com/users/eneszenler/starred{/owner}{/repo}",
834 | "subscriptions_url": "https://api.github.com/users/eneszenler/subscriptions",
835 | "organizations_url": "https://api.github.com/users/eneszenler/orgs",
836 | "repos_url": "https://api.github.com/users/eneszenler/repos",
837 | "events_url": "https://api.github.com/users/eneszenler/events{/privacy}",
838 | "received_events_url": "https://api.github.com/users/eneszenler/received_events",
839 | "type": "User",
840 | "site_admin": false
841 | },
842 | {
843 | "login": "altankurt",
844 | "id": 92332508,
845 | "node_id": "U_kgDOBYDh3A",
846 | "avatar_url": "https://avatars.githubusercontent.com/u/92332508?v=4",
847 | "gravatar_id": "",
848 | "url": "https://api.github.com/users/altankurt",
849 | "html_url": "https://github.com/altankurt",
850 | "followers_url": "https://api.github.com/users/altankurt/followers",
851 | "following_url": "https://api.github.com/users/altankurt/following{/other_user}",
852 | "gists_url": "https://api.github.com/users/altankurt/gists{/gist_id}",
853 | "starred_url": "https://api.github.com/users/altankurt/starred{/owner}{/repo}",
854 | "subscriptions_url": "https://api.github.com/users/altankurt/subscriptions",
855 | "organizations_url": "https://api.github.com/users/altankurt/orgs",
856 | "repos_url": "https://api.github.com/users/altankurt/repos",
857 | "events_url": "https://api.github.com/users/altankurt/events{/privacy}",
858 | "received_events_url": "https://api.github.com/users/altankurt/received_events",
859 | "type": "User",
860 | "site_admin": false
861 | },
862 | {
863 | "login": "seymenklc",
864 | "id": 92471390,
865 | "node_id": "U_kgDOBYMAXg",
866 | "avatar_url": "https://avatars.githubusercontent.com/u/92471390?v=4",
867 | "gravatar_id": "",
868 | "url": "https://api.github.com/users/seymenklc",
869 | "html_url": "https://github.com/seymenklc",
870 | "followers_url": "https://api.github.com/users/seymenklc/followers",
871 | "following_url": "https://api.github.com/users/seymenklc/following{/other_user}",
872 | "gists_url": "https://api.github.com/users/seymenklc/gists{/gist_id}",
873 | "starred_url": "https://api.github.com/users/seymenklc/starred{/owner}{/repo}",
874 | "subscriptions_url": "https://api.github.com/users/seymenklc/subscriptions",
875 | "organizations_url": "https://api.github.com/users/seymenklc/orgs",
876 | "repos_url": "https://api.github.com/users/seymenklc/repos",
877 | "events_url": "https://api.github.com/users/seymenklc/events{/privacy}",
878 | "received_events_url": "https://api.github.com/users/seymenklc/received_events",
879 | "type": "User",
880 | "site_admin": false
881 | },
882 | {
883 | "login": "shd-mn",
884 | "id": 94467821,
885 | "node_id": "U_kgDOBaF27Q",
886 | "avatar_url": "https://avatars.githubusercontent.com/u/94467821?v=4",
887 | "gravatar_id": "",
888 | "url": "https://api.github.com/users/shd-mn",
889 | "html_url": "https://github.com/shd-mn",
890 | "followers_url": "https://api.github.com/users/shd-mn/followers",
891 | "following_url": "https://api.github.com/users/shd-mn/following{/other_user}",
892 | "gists_url": "https://api.github.com/users/shd-mn/gists{/gist_id}",
893 | "starred_url": "https://api.github.com/users/shd-mn/starred{/owner}{/repo}",
894 | "subscriptions_url": "https://api.github.com/users/shd-mn/subscriptions",
895 | "organizations_url": "https://api.github.com/users/shd-mn/orgs",
896 | "repos_url": "https://api.github.com/users/shd-mn/repos",
897 | "events_url": "https://api.github.com/users/shd-mn/events{/privacy}",
898 | "received_events_url": "https://api.github.com/users/shd-mn/received_events",
899 | "type": "User",
900 | "site_admin": false
901 | },
902 | {
903 | "login": "sohail-chughtai",
904 | "id": 94636609,
905 | "node_id": "U_kgDOBaQKQQ",
906 | "avatar_url": "https://avatars.githubusercontent.com/u/94636609?v=4",
907 | "gravatar_id": "",
908 | "url": "https://api.github.com/users/sohail-chughtai",
909 | "html_url": "https://github.com/sohail-chughtai",
910 | "followers_url": "https://api.github.com/users/sohail-chughtai/followers",
911 | "following_url": "https://api.github.com/users/sohail-chughtai/following{/other_user}",
912 | "gists_url": "https://api.github.com/users/sohail-chughtai/gists{/gist_id}",
913 | "starred_url": "https://api.github.com/users/sohail-chughtai/starred{/owner}{/repo}",
914 | "subscriptions_url": "https://api.github.com/users/sohail-chughtai/subscriptions",
915 | "organizations_url": "https://api.github.com/users/sohail-chughtai/orgs",
916 | "repos_url": "https://api.github.com/users/sohail-chughtai/repos",
917 | "events_url": "https://api.github.com/users/sohail-chughtai/events{/privacy}",
918 | "received_events_url": "https://api.github.com/users/sohail-chughtai/received_events",
919 | "type": "User",
920 | "site_admin": false
921 | },
922 | {
923 | "login": "aydinfz",
924 | "id": 95143820,
925 | "node_id": "U_kgDOBavHjA",
926 | "avatar_url": "https://avatars.githubusercontent.com/u/95143820?v=4",
927 | "gravatar_id": "",
928 | "url": "https://api.github.com/users/aydinfz",
929 | "html_url": "https://github.com/aydinfz",
930 | "followers_url": "https://api.github.com/users/aydinfz/followers",
931 | "following_url": "https://api.github.com/users/aydinfz/following{/other_user}",
932 | "gists_url": "https://api.github.com/users/aydinfz/gists{/gist_id}",
933 | "starred_url": "https://api.github.com/users/aydinfz/starred{/owner}{/repo}",
934 | "subscriptions_url": "https://api.github.com/users/aydinfz/subscriptions",
935 | "organizations_url": "https://api.github.com/users/aydinfz/orgs",
936 | "repos_url": "https://api.github.com/users/aydinfz/repos",
937 | "events_url": "https://api.github.com/users/aydinfz/events{/privacy}",
938 | "received_events_url": "https://api.github.com/users/aydinfz/received_events",
939 | "type": "User",
940 | "site_admin": false
941 | },
942 | {
943 | "login": "pelinhangisi",
944 | "id": 96151920,
945 | "node_id": "U_kgDOBbspcA",
946 | "avatar_url": "https://avatars.githubusercontent.com/u/96151920?v=4",
947 | "gravatar_id": "",
948 | "url": "https://api.github.com/users/pelinhangisi",
949 | "html_url": "https://github.com/pelinhangisi",
950 | "followers_url": "https://api.github.com/users/pelinhangisi/followers",
951 | "following_url": "https://api.github.com/users/pelinhangisi/following{/other_user}",
952 | "gists_url": "https://api.github.com/users/pelinhangisi/gists{/gist_id}",
953 | "starred_url": "https://api.github.com/users/pelinhangisi/starred{/owner}{/repo}",
954 | "subscriptions_url": "https://api.github.com/users/pelinhangisi/subscriptions",
955 | "organizations_url": "https://api.github.com/users/pelinhangisi/orgs",
956 | "repos_url": "https://api.github.com/users/pelinhangisi/repos",
957 | "events_url": "https://api.github.com/users/pelinhangisi/events{/privacy}",
958 | "received_events_url": "https://api.github.com/users/pelinhangisi/received_events",
959 | "type": "User",
960 | "site_admin": false
961 | },
962 | {
963 | "login": "naruhitokaide",
964 | "id": 96631656,
965 | "node_id": "U_kgDOBcJ7aA",
966 | "avatar_url": "https://avatars.githubusercontent.com/u/96631656?v=4",
967 | "gravatar_id": "",
968 | "url": "https://api.github.com/users/naruhitokaide",
969 | "html_url": "https://github.com/naruhitokaide",
970 | "followers_url": "https://api.github.com/users/naruhitokaide/followers",
971 | "following_url": "https://api.github.com/users/naruhitokaide/following{/other_user}",
972 | "gists_url": "https://api.github.com/users/naruhitokaide/gists{/gist_id}",
973 | "starred_url": "https://api.github.com/users/naruhitokaide/starred{/owner}{/repo}",
974 | "subscriptions_url": "https://api.github.com/users/naruhitokaide/subscriptions",
975 | "organizations_url": "https://api.github.com/users/naruhitokaide/orgs",
976 | "repos_url": "https://api.github.com/users/naruhitokaide/repos",
977 | "events_url": "https://api.github.com/users/naruhitokaide/events{/privacy}",
978 | "received_events_url": "https://api.github.com/users/naruhitokaide/received_events",
979 | "type": "User",
980 | "site_admin": false
981 | },
982 | {
983 | "login": "cumsoft",
984 | "id": 97250816,
985 | "node_id": "U_kgDOBcvuAA",
986 | "avatar_url": "https://avatars.githubusercontent.com/u/97250816?v=4",
987 | "gravatar_id": "",
988 | "url": "https://api.github.com/users/cumsoft",
989 | "html_url": "https://github.com/cumsoft",
990 | "followers_url": "https://api.github.com/users/cumsoft/followers",
991 | "following_url": "https://api.github.com/users/cumsoft/following{/other_user}",
992 | "gists_url": "https://api.github.com/users/cumsoft/gists{/gist_id}",
993 | "starred_url": "https://api.github.com/users/cumsoft/starred{/owner}{/repo}",
994 | "subscriptions_url": "https://api.github.com/users/cumsoft/subscriptions",
995 | "organizations_url": "https://api.github.com/users/cumsoft/orgs",
996 | "repos_url": "https://api.github.com/users/cumsoft/repos",
997 | "events_url": "https://api.github.com/users/cumsoft/events{/privacy}",
998 | "received_events_url": "https://api.github.com/users/cumsoft/received_events",
999 | "type": "User",
1000 | "site_admin": false
1001 | },
1002 | {
1003 | "login": "ismailuras",
1004 | "id": 98661079,
1005 | "node_id": "U_kgDOBeFy1w",
1006 | "avatar_url": "https://avatars.githubusercontent.com/u/98661079?v=4",
1007 | "gravatar_id": "",
1008 | "url": "https://api.github.com/users/ismailuras",
1009 | "html_url": "https://github.com/ismailuras",
1010 | "followers_url": "https://api.github.com/users/ismailuras/followers",
1011 | "following_url": "https://api.github.com/users/ismailuras/following{/other_user}",
1012 | "gists_url": "https://api.github.com/users/ismailuras/gists{/gist_id}",
1013 | "starred_url": "https://api.github.com/users/ismailuras/starred{/owner}{/repo}",
1014 | "subscriptions_url": "https://api.github.com/users/ismailuras/subscriptions",
1015 | "organizations_url": "https://api.github.com/users/ismailuras/orgs",
1016 | "repos_url": "https://api.github.com/users/ismailuras/repos",
1017 | "events_url": "https://api.github.com/users/ismailuras/events{/privacy}",
1018 | "received_events_url": "https://api.github.com/users/ismailuras/received_events",
1019 | "type": "User",
1020 | "site_admin": false
1021 | },
1022 | {
1023 | "login": "devhiko",
1024 | "id": 99843102,
1025 | "node_id": "U_kgDOBfN8Hg",
1026 | "avatar_url": "https://avatars.githubusercontent.com/u/99843102?v=4",
1027 | "gravatar_id": "",
1028 | "url": "https://api.github.com/users/devhiko",
1029 | "html_url": "https://github.com/devhiko",
1030 | "followers_url": "https://api.github.com/users/devhiko/followers",
1031 | "following_url": "https://api.github.com/users/devhiko/following{/other_user}",
1032 | "gists_url": "https://api.github.com/users/devhiko/gists{/gist_id}",
1033 | "starred_url": "https://api.github.com/users/devhiko/starred{/owner}{/repo}",
1034 | "subscriptions_url": "https://api.github.com/users/devhiko/subscriptions",
1035 | "organizations_url": "https://api.github.com/users/devhiko/orgs",
1036 | "repos_url": "https://api.github.com/users/devhiko/repos",
1037 | "events_url": "https://api.github.com/users/devhiko/events{/privacy}",
1038 | "received_events_url": "https://api.github.com/users/devhiko/received_events",
1039 | "type": "User",
1040 | "site_admin": false
1041 | },
1042 | {
1043 | "login": "MizginYildirak",
1044 | "id": 101987484,
1045 | "node_id": "U_kgDOBhQ0nA",
1046 | "avatar_url": "https://avatars.githubusercontent.com/u/101987484?v=4",
1047 | "gravatar_id": "",
1048 | "url": "https://api.github.com/users/MizginYildirak",
1049 | "html_url": "https://github.com/MizginYildirak",
1050 | "followers_url": "https://api.github.com/users/MizginYildirak/followers",
1051 | "following_url": "https://api.github.com/users/MizginYildirak/following{/other_user}",
1052 | "gists_url": "https://api.github.com/users/MizginYildirak/gists{/gist_id}",
1053 | "starred_url": "https://api.github.com/users/MizginYildirak/starred{/owner}{/repo}",
1054 | "subscriptions_url": "https://api.github.com/users/MizginYildirak/subscriptions",
1055 | "organizations_url": "https://api.github.com/users/MizginYildirak/orgs",
1056 | "repos_url": "https://api.github.com/users/MizginYildirak/repos",
1057 | "events_url": "https://api.github.com/users/MizginYildirak/events{/privacy}",
1058 | "received_events_url": "https://api.github.com/users/MizginYildirak/received_events",
1059 | "type": "User",
1060 | "site_admin": false
1061 | },
1062 | {
1063 | "login": "fdnakn",
1064 | "id": 102616376,
1065 | "node_id": "U_kgDOBh3NOA",
1066 | "avatar_url": "https://avatars.githubusercontent.com/u/102616376?v=4",
1067 | "gravatar_id": "",
1068 | "url": "https://api.github.com/users/fdnakn",
1069 | "html_url": "https://github.com/fdnakn",
1070 | "followers_url": "https://api.github.com/users/fdnakn/followers",
1071 | "following_url": "https://api.github.com/users/fdnakn/following{/other_user}",
1072 | "gists_url": "https://api.github.com/users/fdnakn/gists{/gist_id}",
1073 | "starred_url": "https://api.github.com/users/fdnakn/starred{/owner}{/repo}",
1074 | "subscriptions_url": "https://api.github.com/users/fdnakn/subscriptions",
1075 | "organizations_url": "https://api.github.com/users/fdnakn/orgs",
1076 | "repos_url": "https://api.github.com/users/fdnakn/repos",
1077 | "events_url": "https://api.github.com/users/fdnakn/events{/privacy}",
1078 | "received_events_url": "https://api.github.com/users/fdnakn/received_events",
1079 | "type": "User",
1080 | "site_admin": false
1081 | },
1082 | {
1083 | "login": "DiyarYelbaka",
1084 | "id": 103632571,
1085 | "node_id": "U_kgDOBi1Ouw",
1086 | "avatar_url": "https://avatars.githubusercontent.com/u/103632571?v=4",
1087 | "gravatar_id": "",
1088 | "url": "https://api.github.com/users/DiyarYelbaka",
1089 | "html_url": "https://github.com/DiyarYelbaka",
1090 | "followers_url": "https://api.github.com/users/DiyarYelbaka/followers",
1091 | "following_url": "https://api.github.com/users/DiyarYelbaka/following{/other_user}",
1092 | "gists_url": "https://api.github.com/users/DiyarYelbaka/gists{/gist_id}",
1093 | "starred_url": "https://api.github.com/users/DiyarYelbaka/starred{/owner}{/repo}",
1094 | "subscriptions_url": "https://api.github.com/users/DiyarYelbaka/subscriptions",
1095 | "organizations_url": "https://api.github.com/users/DiyarYelbaka/orgs",
1096 | "repos_url": "https://api.github.com/users/DiyarYelbaka/repos",
1097 | "events_url": "https://api.github.com/users/DiyarYelbaka/events{/privacy}",
1098 | "received_events_url": "https://api.github.com/users/DiyarYelbaka/received_events",
1099 | "type": "User",
1100 | "site_admin": false
1101 | },
1102 | {
1103 | "login": "recepkefelii",
1104 | "id": 105538090,
1105 | "node_id": "U_kgDOBkpiKg",
1106 | "avatar_url": "https://avatars.githubusercontent.com/u/105538090?v=4",
1107 | "gravatar_id": "",
1108 | "url": "https://api.github.com/users/recepkefelii",
1109 | "html_url": "https://github.com/recepkefelii",
1110 | "followers_url": "https://api.github.com/users/recepkefelii/followers",
1111 | "following_url": "https://api.github.com/users/recepkefelii/following{/other_user}",
1112 | "gists_url": "https://api.github.com/users/recepkefelii/gists{/gist_id}",
1113 | "starred_url": "https://api.github.com/users/recepkefelii/starred{/owner}{/repo}",
1114 | "subscriptions_url": "https://api.github.com/users/recepkefelii/subscriptions",
1115 | "organizations_url": "https://api.github.com/users/recepkefelii/orgs",
1116 | "repos_url": "https://api.github.com/users/recepkefelii/repos",
1117 | "events_url": "https://api.github.com/users/recepkefelii/events{/privacy}",
1118 | "received_events_url": "https://api.github.com/users/recepkefelii/received_events",
1119 | "type": "User",
1120 | "site_admin": false
1121 | },
1122 | {
1123 | "login": "osmandlsmn",
1124 | "id": 106361546,
1125 | "node_id": "U_kgDOBlbyyg",
1126 | "avatar_url": "https://avatars.githubusercontent.com/u/106361546?v=4",
1127 | "gravatar_id": "",
1128 | "url": "https://api.github.com/users/osmandlsmn",
1129 | "html_url": "https://github.com/osmandlsmn",
1130 | "followers_url": "https://api.github.com/users/osmandlsmn/followers",
1131 | "following_url": "https://api.github.com/users/osmandlsmn/following{/other_user}",
1132 | "gists_url": "https://api.github.com/users/osmandlsmn/gists{/gist_id}",
1133 | "starred_url": "https://api.github.com/users/osmandlsmn/starred{/owner}{/repo}",
1134 | "subscriptions_url": "https://api.github.com/users/osmandlsmn/subscriptions",
1135 | "organizations_url": "https://api.github.com/users/osmandlsmn/orgs",
1136 | "repos_url": "https://api.github.com/users/osmandlsmn/repos",
1137 | "events_url": "https://api.github.com/users/osmandlsmn/events{/privacy}",
1138 | "received_events_url": "https://api.github.com/users/osmandlsmn/received_events",
1139 | "type": "User",
1140 | "site_admin": false
1141 | },
1142 | {
1143 | "login": "aysenur-aydin",
1144 | "id": 106872138,
1145 | "node_id": "U_kgDOBl69Sg",
1146 | "avatar_url": "https://avatars.githubusercontent.com/u/106872138?v=4",
1147 | "gravatar_id": "",
1148 | "url": "https://api.github.com/users/aysenur-aydin",
1149 | "html_url": "https://github.com/aysenur-aydin",
1150 | "followers_url": "https://api.github.com/users/aysenur-aydin/followers",
1151 | "following_url": "https://api.github.com/users/aysenur-aydin/following{/other_user}",
1152 | "gists_url": "https://api.github.com/users/aysenur-aydin/gists{/gist_id}",
1153 | "starred_url": "https://api.github.com/users/aysenur-aydin/starred{/owner}{/repo}",
1154 | "subscriptions_url": "https://api.github.com/users/aysenur-aydin/subscriptions",
1155 | "organizations_url": "https://api.github.com/users/aysenur-aydin/orgs",
1156 | "repos_url": "https://api.github.com/users/aysenur-aydin/repos",
1157 | "events_url": "https://api.github.com/users/aysenur-aydin/events{/privacy}",
1158 | "received_events_url": "https://api.github.com/users/aysenur-aydin/received_events",
1159 | "type": "User",
1160 | "site_admin": false
1161 | },
1162 | {
1163 | "login": "nurettinyavuz",
1164 | "id": 107870877,
1165 | "node_id": "U_kgDOBm36nQ",
1166 | "avatar_url": "https://avatars.githubusercontent.com/u/107870877?v=4",
1167 | "gravatar_id": "",
1168 | "url": "https://api.github.com/users/nurettinyavuz",
1169 | "html_url": "https://github.com/nurettinyavuz",
1170 | "followers_url": "https://api.github.com/users/nurettinyavuz/followers",
1171 | "following_url": "https://api.github.com/users/nurettinyavuz/following{/other_user}",
1172 | "gists_url": "https://api.github.com/users/nurettinyavuz/gists{/gist_id}",
1173 | "starred_url": "https://api.github.com/users/nurettinyavuz/starred{/owner}{/repo}",
1174 | "subscriptions_url": "https://api.github.com/users/nurettinyavuz/subscriptions",
1175 | "organizations_url": "https://api.github.com/users/nurettinyavuz/orgs",
1176 | "repos_url": "https://api.github.com/users/nurettinyavuz/repos",
1177 | "events_url": "https://api.github.com/users/nurettinyavuz/events{/privacy}",
1178 | "received_events_url": "https://api.github.com/users/nurettinyavuz/received_events",
1179 | "type": "User",
1180 | "site_admin": false
1181 | },
1182 | {
1183 | "login": "oozkanneray",
1184 | "id": 108342464,
1185 | "node_id": "U_kgDOBnUswA",
1186 | "avatar_url": "https://avatars.githubusercontent.com/u/108342464?v=4",
1187 | "gravatar_id": "",
1188 | "url": "https://api.github.com/users/oozkanneray",
1189 | "html_url": "https://github.com/oozkanneray",
1190 | "followers_url": "https://api.github.com/users/oozkanneray/followers",
1191 | "following_url": "https://api.github.com/users/oozkanneray/following{/other_user}",
1192 | "gists_url": "https://api.github.com/users/oozkanneray/gists{/gist_id}",
1193 | "starred_url": "https://api.github.com/users/oozkanneray/starred{/owner}{/repo}",
1194 | "subscriptions_url": "https://api.github.com/users/oozkanneray/subscriptions",
1195 | "organizations_url": "https://api.github.com/users/oozkanneray/orgs",
1196 | "repos_url": "https://api.github.com/users/oozkanneray/repos",
1197 | "events_url": "https://api.github.com/users/oozkanneray/events{/privacy}",
1198 | "received_events_url": "https://api.github.com/users/oozkanneray/received_events",
1199 | "type": "User",
1200 | "site_admin": false
1201 | },
1202 | {
1203 | "login": "szrokmn",
1204 | "id": 109314125,
1205 | "node_id": "U_kgDOBoQATQ",
1206 | "avatar_url": "https://avatars.githubusercontent.com/u/109314125?v=4",
1207 | "gravatar_id": "",
1208 | "url": "https://api.github.com/users/szrokmn",
1209 | "html_url": "https://github.com/szrokmn",
1210 | "followers_url": "https://api.github.com/users/szrokmn/followers",
1211 | "following_url": "https://api.github.com/users/szrokmn/following{/other_user}",
1212 | "gists_url": "https://api.github.com/users/szrokmn/gists{/gist_id}",
1213 | "starred_url": "https://api.github.com/users/szrokmn/starred{/owner}{/repo}",
1214 | "subscriptions_url": "https://api.github.com/users/szrokmn/subscriptions",
1215 | "organizations_url": "https://api.github.com/users/szrokmn/orgs",
1216 | "repos_url": "https://api.github.com/users/szrokmn/repos",
1217 | "events_url": "https://api.github.com/users/szrokmn/events{/privacy}",
1218 | "received_events_url": "https://api.github.com/users/szrokmn/received_events",
1219 | "type": "User",
1220 | "site_admin": false
1221 | },
1222 | {
1223 | "login": "sevdamorkoc",
1224 | "id": 109612146,
1225 | "node_id": "U_kgDOBoiMcg",
1226 | "avatar_url": "https://avatars.githubusercontent.com/u/109612146?v=4",
1227 | "gravatar_id": "",
1228 | "url": "https://api.github.com/users/sevdamorkoc",
1229 | "html_url": "https://github.com/sevdamorkoc",
1230 | "followers_url": "https://api.github.com/users/sevdamorkoc/followers",
1231 | "following_url": "https://api.github.com/users/sevdamorkoc/following{/other_user}",
1232 | "gists_url": "https://api.github.com/users/sevdamorkoc/gists{/gist_id}",
1233 | "starred_url": "https://api.github.com/users/sevdamorkoc/starred{/owner}{/repo}",
1234 | "subscriptions_url": "https://api.github.com/users/sevdamorkoc/subscriptions",
1235 | "organizations_url": "https://api.github.com/users/sevdamorkoc/orgs",
1236 | "repos_url": "https://api.github.com/users/sevdamorkoc/repos",
1237 | "events_url": "https://api.github.com/users/sevdamorkoc/events{/privacy}",
1238 | "received_events_url": "https://api.github.com/users/sevdamorkoc/received_events",
1239 | "type": "User",
1240 | "site_admin": false
1241 | },
1242 | {
1243 | "login": "yurrpt",
1244 | "id": 117461048,
1245 | "node_id": "U_kgDOBwBQOA",
1246 | "avatar_url": "https://avatars.githubusercontent.com/u/117461048?v=4",
1247 | "gravatar_id": "",
1248 | "url": "https://api.github.com/users/yurrpt",
1249 | "html_url": "https://github.com/yurrpt",
1250 | "followers_url": "https://api.github.com/users/yurrpt/followers",
1251 | "following_url": "https://api.github.com/users/yurrpt/following{/other_user}",
1252 | "gists_url": "https://api.github.com/users/yurrpt/gists{/gist_id}",
1253 | "starred_url": "https://api.github.com/users/yurrpt/starred{/owner}{/repo}",
1254 | "subscriptions_url": "https://api.github.com/users/yurrpt/subscriptions",
1255 | "organizations_url": "https://api.github.com/users/yurrpt/orgs",
1256 | "repos_url": "https://api.github.com/users/yurrpt/repos",
1257 | "events_url": "https://api.github.com/users/yurrpt/events{/privacy}",
1258 | "received_events_url": "https://api.github.com/users/yurrpt/received_events",
1259 | "type": "User",
1260 | "site_admin": false
1261 | },
1262 | {
1263 | "login": "tufanuysl",
1264 | "id": 120374100,
1265 | "node_id": "U_kgDOByzDVA",
1266 | "avatar_url": "https://avatars.githubusercontent.com/u/120374100?v=4",
1267 | "gravatar_id": "",
1268 | "url": "https://api.github.com/users/tufanuysl",
1269 | "html_url": "https://github.com/tufanuysl",
1270 | "followers_url": "https://api.github.com/users/tufanuysl/followers",
1271 | "following_url": "https://api.github.com/users/tufanuysl/following{/other_user}",
1272 | "gists_url": "https://api.github.com/users/tufanuysl/gists{/gist_id}",
1273 | "starred_url": "https://api.github.com/users/tufanuysl/starred{/owner}{/repo}",
1274 | "subscriptions_url": "https://api.github.com/users/tufanuysl/subscriptions",
1275 | "organizations_url": "https://api.github.com/users/tufanuysl/orgs",
1276 | "repos_url": "https://api.github.com/users/tufanuysl/repos",
1277 | "events_url": "https://api.github.com/users/tufanuysl/events{/privacy}",
1278 | "received_events_url": "https://api.github.com/users/tufanuysl/received_events",
1279 | "type": "User",
1280 | "site_admin": false
1281 | },
1282 | {
1283 | "login": "ardaizlata389",
1284 | "id": 125192500,
1285 | "node_id": "U_kgDOB3ZJNA",
1286 | "avatar_url": "https://avatars.githubusercontent.com/u/125192500?v=4",
1287 | "gravatar_id": "",
1288 | "url": "https://api.github.com/users/ardaizlata389",
1289 | "html_url": "https://github.com/ardaizlata389",
1290 | "followers_url": "https://api.github.com/users/ardaizlata389/followers",
1291 | "following_url": "https://api.github.com/users/ardaizlata389/following{/other_user}",
1292 | "gists_url": "https://api.github.com/users/ardaizlata389/gists{/gist_id}",
1293 | "starred_url": "https://api.github.com/users/ardaizlata389/starred{/owner}{/repo}",
1294 | "subscriptions_url": "https://api.github.com/users/ardaizlata389/subscriptions",
1295 | "organizations_url": "https://api.github.com/users/ardaizlata389/orgs",
1296 | "repos_url": "https://api.github.com/users/ardaizlata389/repos",
1297 | "events_url": "https://api.github.com/users/ardaizlata389/events{/privacy}",
1298 | "received_events_url": "https://api.github.com/users/ardaizlata389/received_events",
1299 | "type": "User",
1300 | "site_admin": false
1301 | }
1302 | ];
1303 |
1304 |
1305 | export default function handler(req, res) {
1306 | res.status(200).json(followers)
1307 | }
--------------------------------------------------------------------------------
/src/pages/dashboard.js:
--------------------------------------------------------------------------------
1 | import DashBoardContainer from "@/container/dashboard";
2 | import React from "react";
3 |
4 | export default function Dashboard() {
5 | return <> >;
6 | }
7 |
--------------------------------------------------------------------------------
/src/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomeContainer from "@/container/home";
2 | import React from "react";
3 |
4 | export default function Home() {
5 | return ;
6 | }
7 |
--------------------------------------------------------------------------------
/src/pages/non-followers.js:
--------------------------------------------------------------------------------
1 | import NonFollowersContainer from "@/container/nonFollowers";
2 | import React from "react";
3 |
4 | export default function NonFollowers() {
5 | return ;
6 | }
7 |
--------------------------------------------------------------------------------
/src/pages/rate.js:
--------------------------------------------------------------------------------
1 | import RateContainer from "@/container/rate";
2 | import React from "react";
3 |
4 | export default function Home() {
5 | return ;
6 | }
7 |
--------------------------------------------------------------------------------
/src/pages/repos.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReposContainer from "@/container/repos";
3 |
4 | export default function Repos() {
5 | return (
6 | <>
7 |
8 | >
9 | )
10 | }
11 |
--------------------------------------------------------------------------------
/src/redux/store.js:
--------------------------------------------------------------------------------
1 | import { configureStore } from '@reduxjs/toolkit'
2 | import usersReducer from '@/redux/usersSlice';
3 | import themeReducer from '@/redux/theme';
4 |
5 | import { setupListeners } from '@reduxjs/toolkit/query'
6 | import { usersApi } from '@/services/users';
7 | import { rateApi } from '@/services/rate';
8 |
9 | export const store = configureStore({
10 | reducer: {
11 | [usersApi.reducerPath]: usersApi.reducer,
12 | [rateApi.reducerPath]: rateApi.reducer,
13 | users: usersReducer,
14 | theme: themeReducer,
15 | },
16 | middleware: (getDefaultMiddleware) =>
17 | getDefaultMiddleware().concat(usersApi.middleware, rateApi.middleware)
18 |
19 | })
20 |
21 | setupListeners(store.dispatch)
22 |
23 |
--------------------------------------------------------------------------------
/src/redux/theme.js:
--------------------------------------------------------------------------------
1 | import { createSlice } from '@reduxjs/toolkit'
2 |
3 | const initialState = {
4 | isOpenMobileMenu: false,
5 | }
6 |
7 | export const themeSlice = createSlice({
8 | name: 'theme',
9 | initialState,
10 | reducers: {
11 | setOpenMobileMenu: function (state, action) {
12 | state.isOpenMobileMenu = action.payload;
13 | },
14 | }
15 | })
16 |
17 | // Action creators are generated for each case reducer function
18 | export const { setOpenMobileMenu } = themeSlice.actions
19 |
20 | export default themeSlice.reducer
--------------------------------------------------------------------------------
/src/redux/usersSlice.js:
--------------------------------------------------------------------------------
1 | import { createSlice } from '@reduxjs/toolkit'
2 | import { usersApi } from '@/services/users';
3 |
4 | const initialState = {
5 | search: "yasinelbuz",
6 | followers: [],
7 | following: [],
8 | followerPage: 1,
9 | followingPage: 1,
10 | }
11 |
12 | export const usersSlice = createSlice({
13 | name: 'users',
14 | initialState,
15 | reducers: {
16 | setSearch: function (state, action) {
17 | state.search = action.payload;
18 | state.followers = [];
19 | state.following = [];
20 | state.followerPage = 1;
21 | state.followingPage = 1;
22 | },
23 | setFollowers: function (state, action) {
24 | state.followers = action.payload;
25 | },
26 | setFollowing: function (state, action) {
27 | state.following = action.payload;
28 | },
29 | setFollowerPage: function (state, action) {
30 | state.followerPage += action.payload;
31 | },
32 | setFollowingPage: function (state, action) {
33 | state.followingPage += action.payload;
34 | },
35 | },
36 | extraReducers: (builder) => {
37 | builder.addMatcher(
38 | usersApi.endpoints.getGithubUserByFollowers.matchFulfilled,
39 | (state, action) => {
40 | state.followers = [...state.followers, ...action.payload];
41 | }
42 | );
43 | builder.addMatcher(
44 | usersApi.endpoints.getGithubUserByFollowing.matchFulfilled,
45 | (state, action) => {
46 | state.following = [...state.following, ...action.payload];
47 | }
48 | );
49 | },
50 | })
51 |
52 | // Action creators are generated for each case reducer function
53 | export const { setSearch, setFollowers, setFollowing, setFollowerPage, setFollowingPage } = usersSlice.actions
54 |
55 | export default usersSlice.reducer
--------------------------------------------------------------------------------
/src/services/rate.js:
--------------------------------------------------------------------------------
1 |
2 | import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
3 |
4 | export const rateApi = createApi({
5 | reducerPath: 'rateApi',
6 | baseQuery: fetchBaseQuery({ baseUrl: process.env.NEXT_PUBLIC_API }),
7 | endpoints: (build) => ({
8 | getRateLimit: build.query({
9 | query: () => `rate_limit`,
10 | }),
11 | }),
12 | })
13 |
14 | export const { useGetRateLimitQuery } = rateApi
--------------------------------------------------------------------------------
/src/services/users.js:
--------------------------------------------------------------------------------
1 |
2 | import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
3 |
4 | export const usersApi = createApi({
5 | reducerPath: 'usersApi',
6 | baseQuery: fetchBaseQuery({ baseUrl: process.env.NEXT_PUBLIC_API }),
7 | endpoints: (build) => ({
8 | getGithubUserByName: build.query({
9 | query: (name) => `users/${name}`,
10 | }),
11 | getGithubUserByFollowers: build.query({
12 | query: ({ name, followerPage }) => `users/${name}/followers?page=${followerPage}&per_page=${process.env.NEXT_PUBLIC_FOLLOWERS_PER_PAGE}`,
13 | }),
14 | getGithubUserByFollowing: build.query({
15 | query: ({ name, followingPage }) => `users/${name}/following?page=${followingPage}&per_page=${process.env.NEXT_PUBLIC_FOLLOWING_PER_PAGE}`,
16 | }),
17 | getGithubUserByRepos: build.query({
18 | query: (name) => `users/${name}/repos?page=1&per_page=${process.env.NEXT_PUBLIC_REPOS_PER_PAGE}`,
19 | }),
20 | }),
21 | })
22 |
23 | /*while (usersApi.endpoints.getGithubUserByFollowers.select(data).hasNextPage) {
24 | const { data: nextPageData } = await api.endpoints.getUsers.initiate(
25 | usersApi.endpoints.getGithubUserByFollowers.select(data).nextPage
26 | );
27 | allUsers = [...allUsers, ...nextPageData];
28 | }*/
29 |
30 | export const { useGetGithubUserByNameQuery, useGetGithubUserByFollowersQuery, useGetGithubUserByFollowingQuery, useGetGithubUserByReposQuery } = usersApi
--------------------------------------------------------------------------------
/src/styles/_reset.scss:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap");
2 | @import "./variables";
3 |
4 | * {
5 | margin: 0;
6 | padding: 0;
7 | box-sizing: border-box;
8 | }
9 |
10 | html {
11 | font-size: 62.5%;
12 | }
13 |
14 | body {
15 | font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell,
16 | "Open Sans", "Helvetica Neue", sans-serif;
17 | background-color: $bg-color;
18 | font-weight: 400;
19 | }
20 |
21 | ul,
22 | li {
23 | list-style: none;
24 | }
25 |
26 | a {
27 | text-decoration: none;
28 | font-size: 1.6rem;
29 | color: $primary-color;
30 | }
31 |
32 | h1,
33 | h2,
34 | h3,
35 | h4,
36 | h5,
37 | h6 {
38 | text-transform: capitalize;
39 | font-weight: 700;
40 | }
41 |
42 | p {
43 | font-size: 1.6rem;
44 | }
45 |
46 | button {
47 | border: 0;
48 | margin: 0;
49 | }
50 |
51 | input {
52 | border: 0;
53 | }
54 |
--------------------------------------------------------------------------------
/src/styles/_variables.scss:
--------------------------------------------------------------------------------
1 | $primary-color: #2caeba;
2 | $bg-color: #0d1117;
3 | $bg_color_2: #161b22;
4 | $bg_color_blue: #576cbc;
5 |
6 | $white-clr: #fff;
7 | $black-clr: #000;
8 |
9 | $grey-clr: #617d98;
10 | $grey-clr2: #888;
11 |
12 | $hover-clr: #88ebf2;
13 |
14 | $text-light-clr: #fff;
15 | $text-dark-clr: #000;
16 |
--------------------------------------------------------------------------------
/src/styles/globals.scss:
--------------------------------------------------------------------------------
1 | @import "./reset";
2 |
3 | .container {
4 | max-width: 120rem;
5 | margin: 0 auto;
6 | padding: 0 4rem;
7 | }
8 |
9 | /*===============
10 | Spinner
11 | ================*/
12 |
13 | // .spinner-container {
14 | // position: relative;
15 | // }
16 |
17 | // @keyframes spinner {
18 | // to {
19 | // transform: rotate(360deg);
20 | // }
21 | // }
22 |
23 | // .loading {
24 | // position: absolute;
25 | // top: 50%;
26 | // left: 50%;
27 | // transform: translate(-50% -50%);
28 | // width: 12rem;
29 | // height: 12rem;
30 | // margin: 0 auto;
31 | // // margin-top: 10rem;
32 | // border-radius: 50%;
33 | // border: 3px solid #ccc;
34 | // border-top-color: $primary-color;
35 | // animation: spinner 0.6s linear infinite;
36 | // }
37 |
38 | /* width */
39 | ::-webkit-scrollbar {
40 | width: 10px;
41 | border-top-right-radius: 5px;
42 | border-bottom-right-radius: 5px;
43 | }
44 |
45 | /* Track */
46 | ::-webkit-scrollbar-track {
47 | background: $white-clr;
48 | }
49 |
50 | /* Handle */
51 | ::-webkit-scrollbar-thumb {
52 | background: $grey-clr2;
53 | border-radius: 5px;
54 | }
55 |
56 | /* Handle on hover */
57 | ::-webkit-scrollbar-thumb:hover {
58 | background: #555;
59 | }
60 |
61 | @media (max-width: 768px) {
62 | html {
63 | font-size: 56.25%;
64 | }
65 | }
66 |
67 | @media (max-width: 600px) {
68 | html {
69 | font-size: 50%;
70 | }
71 |
72 | .container {
73 | padding: 0 2rem;
74 | }
75 |
76 | .container__inner {
77 | margin-top: 2rem;
78 | }
79 | }
80 |
81 | section {
82 | padding-left: 2rem;
83 | padding-right: 2rem;
84 | }
85 |
--------------------------------------------------------------------------------