- Fork this repository to your own GitHub account
- Clone your fork locally
- Create a new branch from
main(e.g.,feat/your-name-submission) - Build the app with incremental commits on your branch
- Push your branch to your forked repo
- Create a Pull Request from your branch to
mainin your fork
⚠️ Important: Do NOT push directly tomain. Always work on a feature branch and submit via Pull Request.
If you're new to Git or React Native, we recommend completing these courses before starting:
- Git Me Some Version Control (Laracasts)
- YouTube Alternative: Git and GitHub for Beginners - Crash Course (freeCodeCamp)
- Build Mobile Apps with React Native and Expo (Laracasts)
- YouTube Alternatives:
- React Native Tutorial for Beginners (Programming with Mosh)
- React Native Crash Course (Traversy Media)
💡 If you don't have access to Laracasts, the YouTube alternatives cover the same fundamentals.
This assignment is designed to evaluate your fundamentals in React Native, your ability to learn independently, and how you structure, commit, and explain your code.
You will build a small mobile app that simulates a dental office inbox where calls/conversations are listed, viewed, and summarized.
This is not a trick assignment. We care more about clarity, progress, and good habits than perfection.
A simple React Native app with 3 screens:
-
Displays a list of conversations (use fake data from a local JSON file).
-
Each item should show:
- Patient name
- Reason for call
- Timestamp
- Status (New / In Progress / Done)
-
Tapping a conversation opens the detail screen.
-
Shows full details of the conversation:
- Patient name
- Phone number
- Reason for call
- Created date/time
-
Shows a transcript/messages list (fake messages from JSON).
-
Button: “Create Summary” → navigates to Summary screen.
-
Form to create a call summary:
- Summary notes (multiline text input)
- Outcome (Scheduled / Left Voicemail / Needs Follow‑up / Not Interested)
- Next action date (simple text or date picker)
-
Save button:
- Saves the summary locally
- Marks the conversation as Done
- Navigates back to Inbox
-
Start with a local
data.jsonfile containing ~10 conversations. -
On app load:
- Load conversations from JSON
- Overlay any saved updates from local storage
-
Use AsyncStorage (or equivalent) to persist:
- Summary data
- Updated conversation status
-
Data must persist after app reload.
You may choose either:
Option A (Recommended)
- Expo
- React Native
- React Navigation
- AsyncStorage
Option B
- React Native CLI
- React Navigation
- AsyncStorage
Notes:
- Functional components + hooks only
- TypeScript is optional but encouraged
- No backend required
You must push code incrementally to GitHub.
Minimum expected commits (example):
chore: initialize react native appfeat: add inbox screen with conversation listfeat: add navigation and conversation detail screenfeat: add summary screen and formfeat: persist data using asyncstorageui: improve styling and status badgefix: handle loading and empty statesdocs: add readme and setup instructions
Additional requirements:
- Push code regularly (at least 2–3 times per week)
- Use clear, meaningful commit messages
- Create at least one pull request into
main(even if it’s your own repo)
- Clean and readable UI
- Consistent spacing and typography
- Status should be visually distinguishable (badge or label)
- No need for fancy animations
- Search conversations by patient name
- Filter by status (All / New / Done)
- Sort by newest
- Basic form validation
- Ability to edit a saved summary
-
GitHub repository link (with visible commit history)
-
README containing:
- Setup instructions
- Brief explanation of app structure
- What you would improve if you had more time
-
Short demo video (2–4 minutes) showing:
- App navigation
- Creating and saving a summary
- Persistence after reload
- Expected effort: 6–10 hours for MVP
- With polish/stretch goals: 10–20 hours
- Work at your own pace. Once you feel the assignment is complete and polished, share the GitHub repository URL.
We care most about:
- Learning ability
- Code clarity
- Git discipline
- Communication
Good luck — treat this like a real task 🚀