Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/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. ๐
https://github.com/egytech-fyi/egytech-fyi-api
api cloudflare-workers d1 egyptian-programmers hono sqlite typescript
Last synced: 2 days ago
JSON representation
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. ๐
- Host: GitHub
- URL: https://github.com/egytech-fyi/egytech-fyi-api
- Owner: egytech-fyi
- License: mit
- Created: 2024-04-30T11:34:46.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-07-10T20:54:51.000Z (6 months ago)
- Last Synced: 2024-12-18T18:07:58.518Z (10 days ago)
- Topics: api, cloudflare-workers, d1, egyptian-programmers, hono, sqlite, typescript
- Language: TypeScript
- Homepage: https://api.egytech.fyi
- Size: 70.3 KB
- Stars: 56
- Watchers: 2
- Forks: 13
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ 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
- [๐ Tech Scene API](#-tech-scene-api)
- [๐ Table of Contents](#-table-of-contents)
- [๐ Getting Started](#-getting-started)
- [๐ง Prerequisites](#-prerequisites)
- [๐ฆ Installation](#-installation)
- [๐ฅ๏ธ Running the Server](#๏ธ-running-the-server)
- [๐งช Running Tests](#-running-tests)
- [โ๏ธ Deployment](#๏ธ-deployment)
- [๐ API Documentation](#-api-documentation)
- [๐ฅ Participants Endpoint](#-participants-endpoint)
- [๐ Stats Endpoint](#-stats-endpoint)
- [๐๏ธ Project Structure](#๏ธ-project-structure)
- [๐ค Contributing](#-contributing)
- [๐ License](#-license)## ๐ Getting Started
### ๐ง Prerequisites
Ensure you have the following installed:
- Node.js
- npm or yarn
- Cloudflare Wrangler### ๐ฆ Installation
1. Clone the repository:
```bash
git clone https://github.com/your-username/tech-scene-api.git
cd tech-scene-api
```2. Install dependencies:
```bash
npm install
# or
yarn install
```### ๐ฅ๏ธ Running the Server
1. Start the development server with Wrangler:
```bash
npm run dev
# or
yarn dev
```2. The server should now be running at `http://localhost:8787`.
### ๐งช Running Tests
To run the test suite:
```bash
npm test
# or
yarn test
```### โ๏ธ Deployment
Deploy the application using Wrangler:
```bash
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:**
```bash
curl "http://localhost:8787/participants?title=backend&level=senior"
```- **Example Response:**
```json
[
{
"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:**
```bash
curl "http://localhost:8787/stats?title=backend&level=senior"
```- **Example Response:**
```json
{
"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](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.