Mobile Development 10 min read

Lessons from Choosing a Tech Stack for a Small Startup: uni-app, egg.js, and Team Management

This article recounts the author’s experience joining a tiny startup in 2022, detailing the initial tech stack choices of uni‑app, egg.js, MySQL, and antd‑vue for rapid Android/iOS app development, the subsequent challenges, team‑management insights, and practical advice to avoid common pitfalls.

Rare Earth Juejin Tech Community
Rare Earth Juejin Tech Community
Rare Earth Juejin Tech Community
Lessons from Choosing a Tech Stack for a Small Startup: uni-app, egg.js, and Team Management

Background

In June 2022 I joined a very small startup whose founder lacked technical and managerial expertise. Driven by enthusiasm and industry knowledge, the company launched quickly but later faced severe operational difficulties and eventually dissolved, even failing to pay salaries for the last few months.

The founder’s primary demand was to minimize labor costs and ship an Android + iOS app as fast as possible.

Initial Technology Selection

The initial team consisted of myself, a fresh graduate front‑end developer, and a UI designer, with no dedicated QA or HR.

Based on the company’s needs and my own experience (mainly front‑end and Node.js), I chose the following stack:

Use uni-app to develop the cross‑platform app, allowing future expansion to mini‑programs and emphasizing speed.

Use egg.js + MySQL for the back‑end, offering quick development and sufficient performance for the niche domain, with a later migration path to midway.js .

Use antd-vue for the admin dashboard to keep the front‑end technology consistent with uni-app and reduce conversion overhead.

Thus the initial stack was egg.js + MySQL + uni-app + antd-vue , enabling rapid 0‑to‑1 delivery of two apps and an admin panel.

Choosing the App Development Approach

Various options were considered, such as native iOS/Android, Flutter, React‑Native/Taro, and uni‑app. Native development required hiring separate iOS and Android engineers, which the founder could not afford. Flutter demanded learning a new framework or hiring specialists. React‑Native/Taro were similar to uni‑app, but given familiarity, development speed, and efficiency, uni‑app was selected.

Why egg.js for the Back‑End

The decision was driven primarily by cost and familiarity. While mature back‑end solutions like Java, PHP, or Go would be technically superior, they were financially prohibitive. egg.js was simple, fast, and well‑known to the team, lowering the learning curve for new members.

More heavyweight solutions were not economically viable for the founder.

egg.js allowed quick development with low onboarding effort for JavaScript‑savvy developers.

Mid‑Stage Turbulence

Initial development proceeded smoothly, meeting deadlines for development, testing, and launch. However, the founder’s expectations for rapid operation and profit were unrealistic, leading to slow progress and constant changes.

The founder repeatedly consulted unrelated “experts,” resulting in endless UI and business revisions.

A new product manager overhauled the original design, forcing a complete rebuild.

A part‑time leader insisted on hiring native and Java developers without clear justification.

Despite continuous requests for redesigns and code changes, the core technical decisions remained unchanged, and the early work survived. Additional requirements later emerged: system upgrades (1.1, 2.0), mini‑program versions, new supporting systems, instant‑messaging integration, and assorted feature enhancements.

Hiring sprees and sudden layoffs created further instability, while the core operational issues lay outside the product itself, making the development team’s efforts feel futile.

Later Technical Adjustments

Adjusted the app packaging strategy.

Introduced midway.js for new business modules, building on the team’s existing egg.js expertise.

Managed shared internal npm packages and built a component library.

Standardized code style and development processes.

Recruitment and Team Management

Recruitment

Hiring for a small, low‑budget startup is challenging; however, the chosen stack allowed anyone proficient in JavaScript to contribute to both front‑end and back‑end, reducing the need for specialized hires.

Team Management

Key takeaways for managing a tiny team:

Adopt a pragmatic, business‑driven approach from the start.

Favor full‑stack development to avoid coordination bottlenecks.

Establish coding standards aligned with developers’ habits.

Enforce a disciplined workflow: product evaluation → task assignment → technical assessment → development → testing → code review → deployment → post‑release monitoring.

Implement measurable performance metrics such as deadline adherence, documentation quality, bug count, and careful database modifications.

Encourage knowledge sharing and continuous learning.

Maintain open communication for feedback, progress tracking, and difficulty resolution.

Summary and Pitfall‑Avoidance Advice

Ensure the founder is reliable; an indecisive or overly optimistic leader will likely cause project failure.

Focus on revenue generation; without a sustainable business model, the venture cannot survive.

Prioritize core business problems over tooling or code style; technical choices can be refined later.

Provide timely progress updates to leadership and maintain clear communication.

Extract learning from every experience; each step adds value to your career.

If this article helped you, feel free to follow, like, and bookmark it.

team managementstartupuni-appEgg.jsTech Stack
Rare Earth Juejin Tech Community
Written by

Rare Earth Juejin Tech Community

Juejin, a tech community that helps developers grow.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.