TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 20 READS

타입스크립트와 CSS로 짓는 네이티브 앱, GeaStack 예제로 본 크로스타깃 전략

타입스크립트와 CSS로 짓는 네이티브 앱, GeaStack 예제로 본 크로스타깃 전략
SOURCE IMAGE · HACKER NEWS

웹 프런트엔드의 언어인 타입스크립트와 CSS로 임베디드 보드부터 애플 플랫폼까지 아우르는 네이티브 앱을 만든다는 발상은 여전히 낯설다. GeaStack이 공개한 예제 저장소 geastack/examples는 그 발상을 실제로 굴려 보기 위한 출발점이다. 저장소 자체는 대단한 프레임워크가 아니라 '예제 앱과 도구 모음', 즉 앱 갤러리에 가깝다. 그러나 이 갤러리가 어디에 쓰이는지를 보면 GeaStack이 그리는 그림의 윤곽이 드러난다.

이 저장소는 단일 용도로 만들어지지 않았다. 시뮬레이터, 임베디드 타깃, 자체 운영체제인 GeaOS, 애플 타깃, VS Code 및 Cursor용 확장, 그리고 마케팅 데모가 모두 같은 예제 묶음을 참조한다. 하나의 앱 소스가 서로 다른 실행 환경으로 흘러 들어간다는 뜻이다. 각 예제는 작은 패키지 단위로 구성되며, 그 정체성은 package.json 안의 gea 필드, 즉 매니페스트가 규정한다. 앱이 무엇이고 어떤 장치 설정을 전제하는지를 이 매니페스트가 선언한다.

매니페스트가 접착제 역할을 한다

GeaStack 구조에서 흥미로운 지점은 매니페스트의 위상이다. package.json의 gea 필드는 시뮬레이터, 임베디드 보드 스크립트, GeaOS, 애플 타깃, IDE 확장이 공통으로 읽어 들이는 단일 진실 공급원이다. 빌드 가능한 모든 앱은 이 필드를 갖춰야 하며, 문서는 '정확하게 유지하라'고 못 박는다. 여러 실행 대상이 같은 파일을 신뢰하는 구조에서 매니페스트가 어긋나면 특정 타깃에서만 조용히 동작이 깨질 수 있기 때문이다. 다시 말해 이 프로젝트에서 매니페스트 관리는 부수적 작업이 아니라 배포 정합성의 핵심이다.

일부 예제에는 테스트가 함께 들어 있다. 다만 그 성격이 분명하다. 범용 로직 검증이라기보다 특정 레이아웃이나 장치 설정을 지키기 위한 방어용 테스트로, 다른 어떤 것으로도 걸러지지 않을 문제를 잡아내는 데 초점이 있다. 실행은 해당 앱 폴더에서 npm test로 한다. 시각적 배치나 하드웨어 구성처럼 회귀가 발생하기 쉽고 눈으로 놓치기 쉬운 부분에만 테스트를 배치한 셈이어서, 테스트를 어디에 쓸지에 대한 실용적 판단이 엿보인다.

시뮬레이터는 별도 저장소다

실무자가 특히 유의할 지점은 개발 루프의 구성이다. 웹에서 앱을 돌려 보는 이른바 웹 루프는 이 예제 저장소가 아니라 별도 저장소인 geastack/simulator가 구동한다. 시뮬레이터의 스크립트는 앱 프로젝트 루트에서 앱을 읽어 오는데, 그 위치를 GEA_APPS_ROOT 환경 변수에서 가져온다. 이 값은 이 예제 저장소가 될 수도 있고, 사용자가 만든 자신의 앱 디렉터리가 될 수도 있다. 중요한 점은 기본값이 없다는 것이다. GEA_APPS_ROOT를 직접 설정하거나 --app-dir로 넘겨야 하며, 두 저장소가 나란히 놓여 있다고 가정하는 로직은 어디에도 없다. 두 체크아웃을 형제 디렉터리에 두면 알아서 연결되리라 기대했다가는 시작부터 막히기 쉬운 대목이다.

실제 하드웨어로 넘어가는 경로도 마련돼 있다. 호환 보드는 Gea CLI를 통해 플래싱한다. 시뮬레이터로 웹에서 돌려 보고, 매니페스트로 대상 환경을 선언하며, CLI로 실제 보드에 굽는 흐름이 하나의 소스에서 이어지는 구조다.

라이선스: MIT의 관대함과 임베디드의 예외

라이선스 조건은 채택 여부를 판단할 때 반드시 짚어야 한다. 저장소 본체는 MIT 라이선스로, 자유롭게 사용하고 수정하며 이 위에서 폐쇄형 상용 제품을 출시하는 데 제약이 없다고 명시한다. 다만 예외가 하나 있다. 임베디드 보드 지원 코드, 즉 타깃과 @geastack/chips는 GPL-3.0-only로 배포된다. 이 경로를 통해 폐쇄형 펌웨어를 출하하려면 별도의 상용 라이선스가 필요하다. 상용 조건과 지원, 호스팅 빌드에 관해서는 contact@geastack.com으로 문의하도록 안내한다.

이 이원 구조는 프로젝트의 사업 논리를 그대로 보여 준다. 웹과 애플 타깃, 시뮬레이터 계층은 관대한 MIT로 채택 문턱을 낮춰 두고, 실제 상업적 가치가 응축되는 임베디드 펌웨어 계층에서 상용 라이선스로 수익 경로를 남긴 것이다. 따라서 개인 실험이나 시뮬레이터 기반 프로토타이핑은 부담 없이 시작할 수 있지만, 특정 칩 위에 폐쇄형 펌웨어를 얹어 제품화하려는 순간 라이선스 검토가 필수가 된다.

한계도 분명하다. 공개된 자료는 예제 저장소의 개요 수준에 머물러 있어, 타입스크립트와 CSS가 임베디드나 GeaOS 위에서 실제로 어떻게 네이티브 코드로 변환되고 실행되는지, 성능과 메모리 특성은 어떤지에 대한 구체적 근거는 여기서 확인되지 않는다. 결국 이 저장소는 결론이 아니라 입구다. 관심 있는 팀이라면 GEA_APPS_ROOT를 설정해 시뮬레이터부터 돌려 보고, 매니페스트 구조와 라이선스 경계를 먼저 파악하는 것이 합리적인 검토 순서일 것이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/geastack/examples
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...