egytech-fyi/egytech-fyi-api
api.egytech.fyi provides comprehensive data and statistics on participants in the tech industry. Easily retrieve information on job titles, experience levels, compensation, and more. Powered by Cloudflare Workers. ๐
๐ Tech Scene API
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.
๐ Table of Contents
๐ Getting Started
๐ง Prerequisites
Ensure you have the following installed:
- Node.js
- npm or yarn
- Cloudflare Wrangler
๐ฆ Installation
-
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
๐ฅ๏ธ Running the Server
-
Start the development server with Wrangler:
npm run dev # or yarn dev -
The server should now be running at
http://localhost:8787.
๐งช Running Tests
To run the test suite:
npm test
# or
yarn testโ๏ธ Deployment
Deploy the application using Wrangler:
npm run deploy
# or
yarn deploy๐ API Documentation
๐ฅ Participants Endpoint
-
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" } ]
๐ Stats Endpoint
-
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 Structure
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
๐ค Contributing
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
๐ License
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.