A small web app that simulates the behavior and appearance of a common cell phone in 2001.
Remember when smartphones how we know nowadays were something utopic? Handheld devices were, for our modern standards, very limited.
- Weak and expensive internet connection;
- No instant messaging;
- Monochromatic screen;
- No apps;
- No camera (NO SELFIES!!!!)
- and many more unconveniences.
Two main reasons:
I opted for use a specific stack in this project, to extend my knowledge both in web development and technologies/tools:
- TypeScript;
- ReactJS and its ecossystem (react-router, React Context, vitest);
- SASS and other CSS-related stuff (Flexbox, animations, etc);
- HTML5 API's and PWA good practices.
Additionally, it is an exercise in understanding how old phones' OS's worked back in the past.
I always wondered if tablets existed at that time, how would they look like. Now I can know it.
Because ancient devices are still awesome, even after all these years.
Stuff that almost every phone could do at that time:
- Make and receive calls;
- Send and receive text messages;
- Store contacts;
- Set ringtones;
- Take notes;
- Calls log;
- Change phone settings;
- Alarm;
- Clock;
- Calculator;
- SIM services.
- Actual vibration (on calls, received messages, etc);
- Games (at least demo-only versions);
- Integration with native phone services.
I plan to use some smartphone-specific features (battery level, vibration, etc.). You can open this app in a PC or tablet and it will work like a charm, but you will have a better experience in a smartphone.
The project includes a baseline Progressive Web App setup:
- Web app manifest with standalone display mode and install icons
- Service worker for offline shell + cached same-origin static assets
- In-app banner for install/update actions when available
- Build and preview:
./node_modules/.bin/vite build ./node_modules/.bin/vite preview
- Open DevTools > Application:
- Check Manifest fields/icons
- Check Service Worker registration and active status
- Simulate offline mode and refresh:
- App shell should still load after first online visit
- Chrome Android
- Verify install prompt/banner
- Install to home screen and launch in standalone mode
- Validate update banner appears after a new deployment
- Firefox Android
- Verify no runtime errors
- Verify offline shell behavior
- Install remains available through browser UI menu flow