Monorepo และสแตก
Alternun ใช้ monorepo แบบ pnpm workspace พร้อมการ orchestration ด้วย TurboRepo
การตัดสินใจนี้ตั้งใจไว้ชัดเจน เพราะรีโพนี้มีหลายแอปที่ใช้โครงสร้างพื้นฐาน รูปแบบการยืนยันตัวตน งานแปล primitive ด้านดีไซน์ และระบบอัตโนมัติของการออกรีลีสร่วมกัน
โครงสร้าง Workspace
พื้นผิวของแอป
apps/mobile
โค้ดเบสหลักของแอป AIRS
เทคโนโลยีหลัก:
- Expo
- Expo Router
- React 19
- React Native 0.81
- React Native Web
- Supabase JavaScript client
- WalletConnect
- Firebase
- NativeWind และระบบสไตล์ที่ยึดแนวทาง Tailwind
ทำไมจึงสำคัญ:
- โค้ดเบสเดียวรองรับทั้งรูปแบบเนทีฟบนมือถือและกา รส่งมอบบนเว็บ
- ตระกูลโดเมนสาธารณะของ AIRS ถูกขับเคลื่อนจากแอปนี้ผ่านชั้นโครงสร้างพื้นฐาน
apps/admin
คอนโซลแอดมินภายใน
เทคโนโลยีหลัก:
- Vite
- React 18
- React Router
- Refine
oidc-client-ts
ทำไมจึงสำคัญ:
- แยกเวิร์กโฟลว์ด้านปฏิบัติการออกจากประสบการณ์สาธารณะของ AIRS
- สามารถปรับใช้ร่วมกับ API ใน dashboard stack ได้
apps/api
บริการแบ็กเอนด์แบบกำหนดเอง
เทคโนโลยีหลัก:
- NestJS 10
- Fastify 4
- Swagger / OpenAPI
- ตัวแปลงสำหรับ AWS Lambda
ทำไมจึงสำคัญ:
- ทำให้แพลตฟอร์มมีที่สำหรับตรรกะแบ็กเอนด์เฉพาะที่ไม่ควรอยู่ในไคลเอนต์
- ปัจจุบันมีทั้ง health endpoint และ flow เชิงการเชื่อมต่อ เช่น พฤติกรรม Decap OAuth bridge
apps/docs
เว็บไซต์เอกสารสาธารณะ
เทคโนโลยีหลัก:
- Docusaurus 3
- React
- Mermaid diagrams
- การเชื่อมต่อกับ Decap CMS
oidc-client-tsสำหรับการเข้าถึงของบรรณาธิการที่มีการป้องกัน
ทำไมจึงสำคัญ:
- ให้ทั้งเอกสารสาธารณะของผลิตภัณฑ์และเอกสารสำหรับนักพัฒนา
- รองรับเวิร์กโฟลว์การแก้ไขแบบมีการป้องกัน แทนการแก้เนื้อหาใน production โดยตรง
apps/web
แอปพลิเคชัน Next.js
บทบาทปัจจุบัน:
- พื้นผิวเว็บรอง
- ไม่ใช่เป้าหมายหลักของการส่งมอบสาธารณะในโมเดล infra ปัจจุบัน
จุดนี้สำคัญสำหรับผู้ที่เพิ่งเข้ามาอ่านรีโพ เพราะเส้นทางการส่งมอบหลักของ AIRS ตอนนี้เป็น Expo-web-first ไม่ใช่ Next.js-first