What I Learned Building a Startup App: Tech Stack Choices, Team Pitfalls, and Survival Tips
A former startup developer recounts the challenges of rapidly building Android and iOS apps with uni‑app, choosing egg.js and MySQL for the backend, navigating endless product revisions, adjusting the tech stack, and sharing practical advice on hiring, team management, and avoiding common pitfalls.
Background
In June 2022 a small startup needed to launch a cross‑platform mobile app (Android + iOS) quickly to reduce labor costs. The development team consisted of a front‑end developer, a UI designer and the author, with no dedicated backend or QA resources.
Initial Technology Selection
Based on product requirements and the team’s JavaScript experience, the following stack was adopted for rapid 0‑to‑1 delivery:
uni‑app – a Vue‑based cross‑platform framework that compiles to native iOS/Android and can later target mini‑programs.
egg.js with MySQL – a lightweight Node.js framework that can be scaffolded in minutes and provides sufficient performance for the niche logistics domain.
antd‑vue – a UI component library for the admin console, sharing the same Vue ecosystem as uni‑app.
Rationale for Mobile Framework
Alternatives considered:
Native iOS/Android development – required separate developers for each platform, doubling cost and schedule.
Flutter – introduced a new language (Dart) and required hiring or learning.
React‑Native / Taro – similar to uni‑app but the team had more experience with uni‑app’s Vue syntax, leading to faster implementation.
Rationale for Backend Framework
Egg.js was chosen because:
It is a mature Node.js framework with convention‑over‑configuration, allowing rapid scaffolding.
The team already knew JavaScript, keeping the learning curve low.
More heavyweight options (Java, PHP, Go) would have increased hiring costs and delayed delivery.
Mid‑Project Changes
After the initial release, the product underwent frequent scope changes (UI redesigns, new mini‑program support, instant‑messaging integration, version 1.1 system upgrades, UI 2.0). To accommodate these changes the architecture was adjusted:
App packaging strategy was revised to support multiple distribution channels.
New business modules were migrated to midway.js , which builds on Egg.js concepts but adds better modularity and optional TypeScript support.
Internal shared npm packages and a component library were created to avoid code duplication across the mobile app and admin console.
Development workflow was formalized: product evaluation → task assignment → technical assessment → implementation → unit/integration testing → code review → CI/CD deployment → post‑release monitoring.
Code Organization and Standards
Key practices introduced:
All source code resides in a monorepo with separate packages for mobile, admin, and shared components.
ESLint and Prettier configurations were aligned across packages to enforce consistent style.
Database migration scripts are version‑controlled and executed via egg-sequelize (or typeorm) to ensure reproducible schema changes.
CI pipelines (e.g., GitHub Actions) run lint, unit tests, and build steps automatically on each push.
Team and Resource Management
Because the startup could not offer competitive salaries, the JavaScript‑centric stack allowed existing developers to switch between front‑end and back‑end tasks, reducing the need for specialized hires. The following lightweight process helped keep the small team aligned:
Define clear acceptance criteria for each feature.
Track progress in a Kanban board with explicit deadlines.
Conduct short daily stand‑ups to surface blockers.
Perform peer code reviews before merging to the main branch.
Key Takeaways for Startup Development
Prioritize solutions that minimize hiring cost and time‑to‑market; a familiar stack can be more valuable than a theoretically superior one.
Maintain a modular architecture (e.g., shared npm packages, midway.js modules) to accommodate evolving product requirements.
Establish lightweight coding standards and CI pipelines early to avoid technical debt.
Adopt a full‑stack approach in very small teams to prevent coordination bottlenecks.
Focus on revenue‑generating features first; technical refinements can be iterated later.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
dbaplus Community
Enterprise-level professional community for Database, BigData, and AIOps. Daily original articles, weekly online tech talks, monthly offline salons, and quarterly XCOPS&DAMS conferences—delivered by industry experts.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
