Ik zie je - Mobile App
Project Overview
"Ik zie je" is a mobile application I developed for IJsfontijn in 2016, designed to help young people dealing with depression. Originally planned to be built with Ionic and Angular, the project was successfully implemented using Cordova and Vue.js 1.0.21 instead, as it allowed for faster development and better developer familiarity. The entire project was completed in just 3 weeks (2 weeks for development, 1 week for testing), with a focus on providing a quiz-based support system.
A working demo of the application is available at ikzieje.harianto.dev. The demo has been modernized to work with current web technologies, though mobile development features are not available due to the lack of Apple Developer subscription and Android testing devices.
Download
You can download the project source code from: ikzieje-cordova.zip
Technical Stack
- Framework: Vue.js 1.0.21
- Mobile Platform: Cordova (iOS/Android)
- UI Framework: Quasar Framework
- State Management: Vuex
- Routing: Vue Router
- Build Tools:
- Webpack
- Babel
- ESLint
- Stylus
- Less
Core Features
Quiz System
- Random question generation
- Dual-panel display interface
- Interactive answer system
- Progress tracking
Mobile-First Design
- Responsive layout
- Touch interactions (Hammer.js)
- Material Design icons
- Custom animations (GSAP)
Data Management
- JSON-based data storage
- Vuex state management
- Local data persistence
User Interface
- Dual-panel view
- Touch-friendly interface
- Material Design components
- Custom styling with Less
Project Structure
ikzieje-cordova/
├── src/ # Source code
│ ├── vue/ # Vue components
│ ├── assets/ # Static assets
│ ├── less/ # Less stylesheets
│ └── statics/ # Static files
├── cordova/ # Cordova configuration
├── build/ # Build scripts
├── config/ # Configuration files
└── test/ # Test files
Key Components
Frontend Application
- Vue.js components
- Quasar Framework UI
- Material Design icons
- Custom animations
Mobile Integration
- Cordova platform
- Touch event handling
- Mobile-specific features
- Cross-platform compatibility
Development Tools
- Webpack bundling
- Babel transpilation
- ESLint code quality
- Stylus/Less preprocessing
Testing Infrastructure
- Karma test runner
- Mocha testing framework
- Nightwatch E2E testing
- PhantomJS for headless testing
Build and Development
Development Commands
npm run dev
: Start development servernpm run build
: Build for productionnpm run ios
: Run on iOS devicenpm run android
: Run on Android devicenpm run test
: Run unit and E2E tests
Build Process
- Webpack bundling
- Babel transpilation
- CSS preprocessing
- Asset optimization
Mobile Deployment
- iOS simulator support
- Android device support
- Cross-platform compatibility
- Device-specific optimizations
Dependencies
Key dependencies include:
- vue: Frontend framework
- quasar-framework: UI components
- vuex: State management
- vue-router: Routing
- hammerjs: Touch interactions
- gsap-promise: Animations
- material-design-icons: UI icons
- moment: Date handling
Development Tools
- Webpack for bundling
- Babel for transpilation
- ESLint for code quality
- Stylus/Less for styling
- Karma for testing
- Nightwatch for E2E testing
Important Notes
- Uses Vue.js 1.0.21 (specific version required)
- Quasar Framework 0.x version
- Cordova for mobile deployment
- JSON-based data storage
- Dual-panel interface design
- Touch-first interaction model
Testing
Unit Testing
- Karma test runner
- Mocha testing framework
- Chai assertions
- Sinon for mocking
E2E Testing
- Nightwatch
- Selenium WebDriver
- ChromeDriver
- PhantomJS
Mobile Considerations
Platform Support
- iOS device support
- Android device support
- Simulator testing
- Device-specific features
Performance
- Touch optimization
- Animation performance
- Asset optimization
- Memory management
Future Considerations
- Potential upgrade to newer Vue.js version
- Modernization of build tools
- Enhanced testing coverage
- Performance optimizations
- Additional platform support
- Enhanced accessibility features
- Offline capabilities
- Analytics integration