Inspiration
Balance is everything. When something becomes too heavy on one side, it topples — this truth applies to life just as it does to trees. A tree with too many branches and leaves, but no strong trunk or deep roots, cannot support its own weight. It's bound to collapse. Likewise, a tree with an abundance of roots but no growth above the ground withers away, its full potential unseen.
UpRoot is built on this metaphor. We are the tree. If we take on too many goals and tasks without solid discipline and mental well-being, burnout is inevitable. Conversely, if we invest deeply in wellness and inner growth, but don’t apply it toward any visible accomplishments, we fail to bloom in the eyes of the world.
What it does
UncompliGrow turns your personal growth into a living tree — a visual, interactive reflection of your habits, goals, and mental wellness.
- Roots represent belief, rest, and recovery
- The trunk symbolizes discipline — the consistency of daily habits
- Branches are your goals
- Leaves are the tasks you complete
Each element of the tree is connected, helping you see not just what you're accomplishing, but how balanced your growth really is. The metaphor encourages self-awareness:
Are you growing outward without building a foundation?
Are you rooted but hiding from the world?
UncompliGrow helps you answer those questions and take action.
How the tree grows:
- Leaves appear when you complete tasks tied to a goal
- Branches grow as you create new goals or subgoals
- Roots expand when you complete foundational wellness challenges
- The trunk thickens as you complete daily habits
You can add or remove habits, goals, subgoals, tasks, and challenges — giving you full control over how your tree (and you) grow.
How we built it
Technology Stack
- Frontend Framework: React (with TypeScript)
- Build Tool: Vite
- Styling: Tailwind CSS
- Component Library: Shadcn UI
- State Management: React Query
- Routing: React Router
- Icons: Lucide React
Architecture
Frontend Structure
The app uses a component-based architecture:
Pages
Index.tsx: Main dashboard with the growth treeHabits.tsx: Habit management pageGoals.tsx: Goal tracking and managementChallenges.tsx: Daily challenges and roots
Components
Tree.tsx: Core visualization of user’s growthHabitItem.tsx: Represents individual habitsGoalItem.tsx: Handles goal and task managementChallengeItem.tsx: Tracks and displays challenge progress
Utilities
api.ts- Custom hooks for:
- Toast notifications
- API interactions
- Toast notifications
Challenges we ran into
Coming into Bitcamp 2025, I had very little experience with frontend development. Most of my background was in backend and logic-heavy systems, so diving into React, Tailwind CSS, and component-based design was a steep learning curve.
I had to quickly learn how to manage state with React Query, structure pages with React Router, and build responsive, modular interfaces using Tailwind — all within a high-pressure environment.
Accomplishments that we're proud of
- Built a fully functional and interactive growth-tracking tree in just 36 hours
- Learned and implemented a modern frontend stack (React, TypeScript, Tailwind CSS) with no prior experience
- Created a visually tree structure that grows based on user input. (Trust me! This was really an accomplishment...)
What we learned
- Gained hands-on experience with React and TypeScript, including managing state and routing
- Learned how to style components using Tailwind CSS
- Understood the importance of component reusability and clean architecture in frontend development
What's next for UncompliGrow
- User Authentication: Enable users to securely log in and save their growth data
- Backend Integration: Replace the mock API with a real database and backend service
- Personalized Challenges: Generate daily challenges based on past activity and habits
- More Tree Variations: Let users customize their growth tree based on their goals or themes (like positioning branches, color, etc.)
Built With
- javascript
- react
- shadcn-ui
- tailwind-css
- typescript
- vite
Log in or sign up for Devpost to join the conversation.