This project provides APIs to retrieve and analyze participants' data in the tech industry. It uses the Hono framework for building the API and Jest for testing.
Ensure you have the following installed:
- Node.js
- npm or yarn
- Cloudflare Wrangler
-
Clone the repository:
git clone https://github.com/your-username/tech-scene-api.git cd tech-scene-api
-
Install dependencies:
npm install # or yarn install
-
Start the development server with Wrangler:
npm run dev # or yarn dev
-
The server should now be running at
http://localhost:8787
.
To run the test suite:
npm test
# or
yarn test
Deploy the application using Wrangler:
npm run deploy
# or
yarn deploy
-
Endpoint:
/participants
-
Method:
GET
-
Query Parameters:
title
(string): Job titlelevel
(string): Job levelgender
(string): Gendercs_degree
(string): CS Degree (yes/no)business_market
(string): Business market (global/regional/local)business_size
(string): Business size (large/medium/small)business_focus
(string): Business focus (product/software_house)business_line
(string): Business line (b2b/b2c/both)yoe_from_included
(number): Years of experience fromyoe_to_excluded
(number): Years of experience toprogramming_language
(string): Programming languageinclude_relocated
(string): Include relocated (true/false)include_remote_abroad
(string): Include remote abroad (true/false)
-
Example Request:
curl "http://localhost:8787/participants?title=backend&level=senior"
-
Example Response:
[ { "title": "Backend Engineer", "level": "Senior", "gender": "Male", "degree": "Yes", "businessMarket": "Global", "businessSize": "Large", "businessFocus": "Product-based company", "businessLine": "B2B", "yearsOfExperience": 5, "programmingLanguagues": "Python, Java, etc.", "workSetting": "Office", "isEgp": true, "netCompensation": 120000, "location": "Cairo" } ]
-
Endpoint:
/stats
-
Method:
GET
-
Query Parameters:
- Similar to the Participants endpoint
title
(string)level
(string)gender
(string)cs_degree
(string)business_market
(string)business_size
(string)business_focus
(string)business_line
(string)yoe_from_included
(number)yoe_to_excluded
(number)programming_language
(string)include_relocated
(string)include_remote_abroad
(string)
-
Example Request:
curl "http://localhost:8787/stats?title=backend&level=senior"
-
Example Response:
{ "stats": { "totalCount": 150, "median": 75000, "p20Compensation": 50000, "p75Compensation": 90000, "p90Compensation": 120000 }, "buckets": [ { "bucket": "0-3K", "count": 10 }, { "bucket": "3-6K", "count": 20 }, // more buckets... ] }
project-root/
βββ src/
β βββ routes/
β β βββ participants.ts
β β βββ stats.ts
β β βββ index.ts
β βββ utils/
β β βββ queryHelpers.ts
β β βββ maps.ts
β βββ config/
β β βββ swaggerSpec.ts
β βββ types/
β β βββ bindings.ts
β βββ app.ts
β βββ index.ts
βββ tests/
β βββ utils/
β β βββ queryHelpers.test.ts
βββ package.json
βββ tsconfig.json
βββ jest.config.js
βββ README.md
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
- Fork the repository
- Create a new branch (
git checkout -b feature-branch
) - Make your changes
- Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature-branch
) - Open a pull request
This project is licensed under the MIT License. See the LICENSE file for details.
This README provides a comprehensive guide for setting up, running, and testing the project, as well as detailed API documentation and project structure information.