Skip to content

Commit 545e489

Browse files
committed
chore: remove PokeAPI references from README, docs, app and CI
Strips the 'inspired by PokeAPI' attributions and PokeAPI-style mentions from the README, design docs (SPEC/DATA_PIPELINE/DEVELOPMENT), app/main.py description, scripts/dump.py and refresh-data.yml — generalising the wording while keeping the rationale intact.
1 parent d948ce3 commit 545e489

7 files changed

Lines changed: 32 additions & 34 deletions

File tree

.github/workflows/refresh-data.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: refresh-data
22

3-
# Static-dump refresh (PokeAPI api-data style + git-scraping pattern).
3+
# Static-dump refresh (git-scraping pattern).
44
# Regenerates dump/ from the curated seed data and commits it back when it changes.
55
# - weekly schedule keeps the static dump fresh
66
# - runs on any change to data/ (e.g. a curated-data PR)

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TechAPI
22

3-
> **Open data platform for consumer electronics specs.** Free, open-source, and inspired by [PokeAPI](https://pokeapi.co).
3+
> **Open data platform for consumer electronics specs.** Free and open-source.
44
55
[![test](https://github.com/GetTechAPI/techapi/actions/workflows/test.yml/badge.svg)](https://github.com/GetTechAPI/techapi/actions/workflows/test.yml)
66
 Code: **MIT** · Data: **CC-BY-SA 4.0**
@@ -77,7 +77,7 @@ pytest --cov=app # tests + coverage (target >60%)
7777

7878
## Static dataset & automation
7979

80-
The live API can be exported to a **static JSON dump** (PokeAPI-style) that needs
80+
The live API can be exported to a **static JSON dump** that needs
8181
no server:
8282

8383
```bash

app/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
DESCRIPTION = (
2222
"Open data platform for consumer electronics specs. "
23-
"Free, open-source, and inspired by PokeAPI. "
23+
"Free and open-source. "
2424
f"Data licensed CC-BY-SA 4.0. Try `GET {PREFIX}/smartphones`."
2525
)
2626

docs/DATA_PIPELINE.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@ daily) refresh is plenty. That makes a pre-generated static dataset ideal:
1818
- **Fast**: edge-cached files, no cold starts.
1919

2020
### How others do it
21-
- **PokeAPI** converted its API to **static JSON files** in 2018, generated
22-
from its database by an updater bot and hosted on cheap static hosting +
23-
Cloudflare CDN. See [PokeAPI/api-data](https://github.com/PokeAPI/api-data),
24-
[pokeapi.co/about](https://pokeapi.co/about).
21+
- **Static-API conversion**: several open APIs convert their database to a tree
22+
of **static JSON files** generated by an updater bot and hosted on cheap static
23+
hosting + a CDN — no server, trivial to scale and self-host.
2524
- **Git scraping** (Simon Willison): a scheduled GitHub Actions job fetches
2625
data, pretty-prints it, and commits it back when it changes — no server
2726
needed. See [simonwillison.net](https://simonwillison.net/2020/Oct/9/git-scraping/).
@@ -80,7 +79,7 @@ real option but is a **strategy change**, so here are the paths:
8079

8180
| Option | What it means | Trade-offs |
8281
|---|---|---|
83-
| **A. Public (current SPEC)** | `data/` + static dump public, CC-BY-SA | Simplest; matches open-data mission & PokeAPI model; community can contribute & self-host. Anyone can copy the data. |
82+
| **A. Public (current SPEC)** | `data/` + static dump public, CC-BY-SA | Simplest; matches the open-data mission; community can contribute & self-host. Anyone can copy the data. |
8483
| **B. Private factory → public product** | Scrapers + raw/messy data in a **private** repo; only a curated, licensed **public dump** is published | Best of both: keep collection methods/raw data private, still ship an open API. Two repos to run. |
8584
| **C. Fully private** | Data + dump + API all private (private repo, auth-gated API) | Maximum control / proprietary value, but abandons the open-data positioning, CC-BY-SA, and community contributions. The API stays code-MIT but data is closed. |
8685

docs/DEVELOPMENT.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
## What this is
77

88
TechAPI — a free, open REST API for consumer-electronics specs (smartphones,
9-
SoCs, GPUs, CPUs, brands). FastAPI + SQLModel, inspired by PokeAPI. **This repo is
9+
SoCs, GPUs, CPUs, brands). FastAPI + SQLModel. **This repo is
1010
the public product: the API + a curated dataset + a static JSON dump.** It does
1111
**not** contain data-collection/scraping tooling (that is maintained separately;
1212
see "Data scope" below).
@@ -57,7 +57,7 @@ data/ CURATED SEED DATA — singular folder names, organised by b
5757
scripts/
5858
seed.py data/ → DB (recurses brand subfolders; coerces ISO dates)
5959
validate.py schema/range/FK/slug checks (run in CI on data changes)
60-
dump.py DB → static JSON dump (replays API; PokeAPI-style) → ./dump
60+
dump.py DB → static JSON dump (replays API) → ./dump
6161
tests/ unit/ + integration/ (conftest seeds a temp SQLite from data/)
6262
docs/ SPEC.md, DATA_PIPELINE.md, DEVELOPMENT.md
6363
.github/workflows/ test.yml, validate-data.yml, refresh-data.yml
@@ -84,8 +84,8 @@ python -m scripts.dump # generate ./dump/ static tree (gitignored)
8484
recorded as **ADR-011** / **§6.7** in docs/SPEC.md (maintainer wants computer chips).
8585
- **GPU activated** — model existed (§6.5); endpoints + data added.
8686
- **Data restructured** to singular names + brand subfolders (maintainer request).
87-
- **Static-dump pivot**`scripts/dump.py` exports the API to a static JSON tree
88-
(PokeAPI api-data style), refreshed by GitHub Actions (`refresh-data.yml`).
87+
- **Static-dump pivot**`scripts/dump.py` exports the API to a static JSON tree,
88+
refreshed by GitHub Actions (`refresh-data.yml`).
8989
- **Scoring** is a Phase-0 reference-based approximation; Phase 1 → dataset-wide
9090
min-max (§8.4). Raw third-party benchmarks (Geekbench/AnTuTu/Cinebench/Time Spy)
9191
are stored as algorithm inputs but NOT exposed (ADR-006).

docs/SPEC.md

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# TechAPI 프로젝트 명세서
22

33
> **Open data platform for consumer electronics specs**
4-
> Inspired by [PokeAPI](https://pokeapi.co)
4+
> Free, open, and static — no key required
55
66
| 항목 ||
77
|---|---|
@@ -157,7 +157,7 @@
157157
├── §23 ADR에 결정 근거 있나? → 따라가기
158158
├── 컨벤션(§14)에 답 있나? → 따라가기
159159
└── 위 모두 NO →
160-
├── PokeAPI는 어떻게 했나? → 참고
160+
├── 유사 오픈 API는 어떻게 했나? → 참고
161161
├── FastAPI 공식 권장은? → 따라가기
162162
└── 그래도 모르면 → GitHub Issue로 SPEC PR 요청
163163
```
@@ -206,18 +206,18 @@ feat: project scaffolding + health endpoint
206206
- **신뢰**: 출처 명시, 검증 가능, 버전 관리되는 데이터
207207
- **확장 가능**: 카테고리·언어·기여자 모두 확장 가능
208208

209-
### 1.4 영감: PokeAPI에서 가져온 5가지 패턴
209+
### 1.4 영감: 정적 오픈 데이터 API에서 가져온 5가지 패턴
210210

211211
1. **오픈소스 정체성** — 코드·데이터·문서·인프라 전부 공개. 누구나 self-host 가능
212212
2. **단순한 RESTful 구조** — 슬러그 기반 URL
213213
3. **풍부한 관계 모델링** — 포켓몬↔능력↔기술↔타입 연결
214-
4. **다중 리포 분리** — API / 데이터 / 이미지 / SDK 각각 (PokeAPI org에 15개 리포)
214+
4. **다중 리포 분리** — API / 데이터 / 이미지 / SDK 각각
215215
5. **정적 JSON 덤프** — 서버 의존 없이 사용 가능 (api-data 리포)
216-
6. **공식 SDK 다언어 지원**pokedex-promise-v2, pokebase, pokepy 등
216+
6. **공식 SDK 다언어 지원**여러 언어용 클라이언트 라이브러리 제공
217217

218218
TechAPI는 이 패턴을 **소비자 전자기기 도메인**에 적용.
219219

220-
**PokeAPI와 다른 점**: 접근 모델은 PokeAPI식 완전 익명이 아닌 **TMDB식 무료 등록 + 토큰 발급** 채택 (§7.6 참조). 이유는 사용 추적·악용 방지·점진적 티어링.
220+
**접근 모델**: 완전 익명이 아닌 **TMDB식 무료 등록 + 토큰 발급** 채택 (§7.6 참조). 이유는 사용 추적·악용 방지·점진적 티어링.
221221

222222
### 1.5 운영 주체
223223

@@ -231,7 +231,7 @@ TechAPI는 이 패턴을 **소비자 전자기기 도메인**에 적용.
231231

232232
### 1.6 핵심 가치
233233

234-
- **오픈소스 우선** — 코드(MIT)·데이터(CC-BY-SA)·문서·인프라 코드 전부 공개. Self-host 가능. PokeAPI 정신 계승
234+
- **오픈소스 우선** — 코드(MIT)·데이터(CC-BY-SA)·문서·인프라 코드 전부 공개. Self-host 가능.
235235
- **플랫폼 사고** — TechAPI는 특정 앱의 백엔드가 아닌 다수 사용자가 공유하는 공공 인프라. TechPicks는 첫 사용자일 뿐, 마지막 사용자가 아님.
236236
- **개발자 우선** — 소비자 UI는 TechPicks 같은 별도 프로젝트 책임. TechAPI는 API 안정성·문서 품질에 집중.
237237
- **데이터 정확성** — 출처 명시 없는 데이터는 들이지 않음
@@ -455,7 +455,7 @@ techapi/
455455
├── scripts/
456456
│ ├── seed.py # DB 시드 주입 (data/ 재귀 로드)
457457
│ ├── validate.py # 스키마 검증
458-
│ └── dump.py # DB → 정적 JSON 덤프 (PokeAPI식)
458+
│ └── dump.py # DB → 정적 JSON 덤프
459459
├── tests/
460460
│ ├── unit/
461461
│ ├── integration/
@@ -785,14 +785,14 @@ class CPU:
785785

786786
### 7.6 인증 & 레이트 리밋 (TMDB 모델)
787787

788-
TechAPI는 **오픈소스 + 무료 등록 필수** 모델 채택 (TMDB 방식). PokeAPI식 완전 익명 접근은 비채택.
788+
TechAPI는 **오픈소스 + 무료 등록 필수** 모델 채택 (TMDB 방식). 완전 익명 접근은 비채택.
789789

790790
**왜 TMDB식인가:**
791791
- 사용 추적 (누가 뭘 쓰는지 파악 → 데이터 우선순위 결정)
792792
- 악용 방지 (남용 시 토큰만 차단)
793793
- 점진적 티어링 가능 (Free → Hobby → Commercial)
794794
- 사용자와 직접 관계 구축
795-
- **코드는 100% 오픈소스 → 부담스러우면 self-host 가능** (PokeAPI 정신 보존)
795+
- **코드는 100% 오픈소스 → 부담스러우면 self-host 가능**
796796

797797
#### 토큰 발급 절차
798798

@@ -865,7 +865,7 @@ tk_test_{32자 랜덤} # 테스트 (Phase 4+, 더 낮은 한도)
865865
- Docker 이미지 + 배포 가이드 (`docs/SELF_HOSTING.md`)
866866
- 자체 인스턴스에서는 인증 끄거나 자체 토큰 시스템 운영 가능
867867

868-
**이게 PokeAPI식 오픈소스 정신과 TMDB식 운영 책임의 균형점.**
868+
**이게 오픈소스 정신과 TMDB식 운영 책임의 균형점.**
869869

870870
### 7.7 버저닝 정책
871871

@@ -1816,7 +1816,7 @@ TechAPI의 **핵심 목표 중 하나**. TechPicks 외에 다양한 앱·플랫
18161816
- **날짜**: 2026-05-26
18171817
- **상태**: Accepted
18181818
- **결정**: Phase 0~1은 단일 리포, Phase 2부터 분리
1819-
- **대안**: 처음부터 PokeAPI식 다중 리포
1819+
- **대안**: 처음부터 다중 리포로 분리
18201820
- **근거**: 솔로 개발자의 리포 관리 부담, YAGNI 원칙, 필요해질 때 분리
18211821

18221822
### ADR-004: 개인 계정 리포 유지 → 미래 마이그레이션
@@ -1854,7 +1854,7 @@ TechAPI의 **핵심 목표 중 하나**. TechPicks 외에 다양한 앱·플랫
18541854
- **근거**:
18551855
- 처음부터 다중 사용자를 가정하면 API 설계가 더 일반화·견고해짐
18561856
- 데이터 라이선스(CC-BY-SA)가 다중 사용을 전제
1857-
- PokeAPI 모델은 공공 인프라 발상이지 특정 앱의 백엔드가 아님
1857+
- 공공 데이터 API 모델은 공공 인프라 발상이지 특정 앱의 백엔드가 아님
18581858
- 외부 사용자가 곧 데이터 정확성·기능 풍부함의 검증자
18591859
- TechPicks 시장 실패 시에도 TechAPI는 독립적으로 가치 보유
18601860
- **영향**:
@@ -1866,29 +1866,29 @@ TechAPI의 **핵심 목표 중 하나**. TechPicks 외에 다양한 앱·플랫
18661866
### ADR-009: TMDB식 토큰 기반 접근 + 오픈소스 self-host 옵션
18671867
- **날짜**: 2026-05-26
18681868
- **상태**: Accepted
1869-
- **결정**: PokeAPI식 완전 익명 접근 대신, TMDB식 **무료 등록 + 토큰 발급 + 티어 한도** 모델 채택. 단, 코드 100% 오픈소스 유지하여 self-host 옵션 제공.
1870-
- **대안 1**: PokeAPI식 완전 익명 (IP 기반 제한만)
1869+
- **결정**: 완전 익명 접근 대신, TMDB식 **무료 등록 + 토큰 발급 + 티어 한도** 모델 채택. 단, 코드 100% 오픈소스 유지하여 self-host 옵션 제공.
1870+
- **대안 1**: 완전 익명 (IP 기반 제한만)
18711871
- **대안 2**: 전부 유료 (Stripe API식)
18721872
- **근거**:
18731873
- **사용 추적**: 누가 뭘 쓰는지 알아야 데이터 우선순위 결정 가능
18741874
- **악용 방지**: 남용 시 IP 차단보다 토큰 차단이 정밀
18751875
- **점진적 티어링**: Free → Hobby → OSS → Commercial 가능
18761876
- **사용자 관계**: 이메일로 breaking change 통보 등
18771877
- **재정 지속성**: Commercial 티어로 운영비 보조 (Phase 5+ 옵션)
1878-
- **오픈소스 정신 보존**: 코드 공개 + self-host 가능 → PokeAPI 정신 계승
1878+
- **오픈소스 정신 보존**: 코드 공개 + self-host 가능
18791879
- **영향**:
18801880
- Phase 1에 토큰 시스템 구축 필요 (가입·발급·미들웨어)
18811881
- 대시보드 사이트 구축 (Phase 3)
18821882
- Self-hosting 가이드 (`docs/SELF_HOSTING.md`) 작성 필수
1883-
- 정적 JSON 덤프는 항상 무인증 (PokeAPI 정신)
1883+
- 정적 JSON 덤프는 항상 무인증
18841884
- **참고 모델**: TMDB API, OpenWeather, Stripe (티어링 부분만)
18851885

18861886
### ADR-010: 전용 서버 (FastAPI on Railway/Fly.io) — 서버리스/Next.js 대신
18871887
- **날짜**: 2026-05-26
18881888
- **상태**: Accepted
18891889
- **결정**: FastAPI를 Railway 또는 Fly.io에 배포하는 **전용 서버 모델**. Next.js 풀스택 / 정적 / Cloudflare Workers / Vercel Serverless 등 대안은 모두 검토 후 비채택.
18901890
- **검토한 대안**:
1891-
- **정적 (PokeAPI식)**: 인증·복잡 쿼리 불가 → 핵심 요구 불충족
1891+
- **정적 덤프 단독**: 인증·복잡 쿼리 불가 → 핵심 요구 불충족
18921892
- **Next.js + Vercel 서버리스**: cold start, DB 풀 폭주, 백그라운드 작업 불가, vendor lock-in, 비용 변동성 → 백엔드 용도로 업계가 권장하지 않음
18931893
- **Cloudflare Workers + Hono**: Workers 한계 (Postgres 직결 어려움, 일부 Node API 불가) + 별도 학습 부담
18941894
- **자체 VPS (DigitalOcean Droplet)**: 운영 부담 (SSL·모니터링·재시작 직접 설정) — 솔로 부담
@@ -1901,7 +1901,7 @@ TechAPI의 **핵심 목표 중 하나**. TechPicks 외에 다양한 앱·플랫
19011901
- **비용 예측**: $5/월 고정 (Railway) — 트래픽 변동에 무관
19021902
- **백엔드 학습 가치 최대**: FastAPI는 시장 표준
19031903
- **Vendor lock-in 없음**: Docker 이미지로 어디든 이전 가능
1904-
- **PokeAPI 초기 모델과 동일**: Paul Hallett이 2014~2018 DigitalOcean 1대로 운영한 패턴
1904+
- **단일 VPS로 충분**: 정적 덤프 + 가벼운 API는 작은 서버 한 대로 운영 가능
19051905
- **Railway/Fly.io의 모던 PaaS**: git push → 자동 배포, SSL·health check·모니터링 자동
19061906
- **운영 부담의 현실**:
19071907
- 실제 작업: 가끔 대시보드 확인 + 월 1회 dependency 업데이트
@@ -1960,7 +1960,6 @@ TechAPI의 **핵심 목표 중 하나**. TechPicks 외에 다양한 앱·플랫
19601960

19611961
### 25.1 영감
19621962

1963-
- [PokeAPI](https://pokeapi.co) — 구조·운영 모델
19641963
- [OpenStreetMap](https://www.openstreetmap.org) — 데이터 라이선스
19651964
- [MusicBrainz](https://musicbrainz.org) — 데이터 모델·기여 시스템
19661965
- [The Movie Database (TMDB)](https://www.themoviedb.org) — API 설계

scripts/dump.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Generate a static JSON dump from the database (§4.2 data flow, §16.1 dump-data.yml).
22
3-
PokeAPI-style: the live API responses are written to a tree of static files so a
3+
The live API responses are written to a tree of static files so a
44
client can fetch ``dump/v1/smartphones/galaxy-s25/index.json`` without any server.
55
Because the dump is produced by replaying the real endpoints through an in-process
66
client, the static files byte-match the live API — zero serialization drift.

0 commit comments

Comments
 (0)