Skip to content

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. πŸš€

License

Notifications You must be signed in to change notification settings

egytech-fyi/egytech-fyi-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌟 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

  1. Clone the repository:

    git clone https://github.com/your-username/tech-scene-api.git
    cd tech-scene-api
  2. Install dependencies:

    npm install
    # or
    yarn install

πŸ–₯️ Running the Server

  1. Start the development server with Wrangler:

    npm run dev
    # or
    yarn dev
  2. The server should now be running at http:https://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 title
    • level (string): Job level
    • gender (string): Gender
    • cs_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 from
    • yoe_to_excluded (number): Years of experience to
    • programming_language (string): Programming language
    • include_relocated (string): Include relocated (true/false)
    • include_remote_abroad (string): Include remote abroad (true/false)
  • Example Request:

    curl "http:https://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:https://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.

  1. Fork the repository
  2. Create a new branch (git checkout -b feature-branch)
  3. Make your changes
  4. Commit your changes (git commit -m 'Add some feature')
  5. Push to the branch (git push origin feature-branch)
  6. 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.

About

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. πŸš€

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published