{"id":18257021,"url":"https://github.com/mediacomem/comem-appmob","last_synced_at":"2026-01-22T17:03:32.205Z","repository":{"id":73832342,"uuid":"79108339","full_name":"MediaComem/comem-appmob","owner":"MediaComem","description":"COMEM+ Mobile Applications course","archived":false,"fork":false,"pushed_at":"2019-09-17T09:20:59.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-14T17:43:37.321Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MediaComem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-16T10:37:24.000Z","updated_at":"2019-01-29T13:40:56.000Z","dependencies_parsed_at":"2023-09-21T07:36:41.710Z","dependency_job_id":null,"html_url":"https://github.com/MediaComem/comem-appmob","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaComem%2Fcomem-appmob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaComem%2Fcomem-appmob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaComem%2Fcomem-appmob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MediaComem%2Fcomem-appmob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MediaComem","download_url":"https://codeload.github.com/MediaComem/comem-appmob/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247938982,"owners_count":21021633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T10:24:36.038Z","updated_at":"2026-01-22T17:03:27.179Z","avatar_url":"https://github.com/MediaComem.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# COMEM+ Mobile Applications course\n\nThe goal of this course is to teach how to develop hybrid mobile applications,\ni.e. web apps embedded into native apps on multiple platforms.\nYou will:\n\n* Learn about hybrid mobile application development with [Ionic][ionic] and [Cordova][cordova].\n* Learn the basics of [Angular][angular].\n* Design and develop a **mobile application** optionally based on the API developed in the [previous course][webserv].\n* Run the mobile application on your **phone**.\n\nThis course is a [COMEM+][comem] [web development course][comem-webdev] taught at [HEIG-VD][heig].\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n\n- [Plan](#plan)\n- [What you will need](#what-you-will-need)\n- [Evaluation](#evaluation)\n- [Useful links](#useful-links)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n\n\n## Plan\n\n* Going further with JavaScript\n  * [JavaScript prototypes](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/js-prototypes?home=MediaComem%2Fcomem-appmob%23readme)\n  * [JavaScript classes](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/js-classes?home=MediaComem%2Fcomem-appmob%23readme)\n  * [JavaScript modules](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/js-modules?home=MediaComem%2Fcomem-appmob%23readme)\n  * [JavaScript promises](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/js-promises?home=MediaComem%2Fcomem-appmob%23readme)\n\n* Ionic\n  * [Introduction](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/ionic?home=MediaComem%2Fcomem-appmob%23readme)\n  * [TypeScript](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/ts?home=MediaComem%2Fcomem-appmob%23readme)\n  * [Angular](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/angular?home=MediaComem%2Fcomem-appmob%23readme)\n\n* Setup\n  * Mockups\n  * [Live setup][setup-project]\n\n* Additional JavaScript concepts\n  * [JavaScript closures](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/js-closures?home=MediaComem%2Fcomem-appmob%23readme)\n\n* Ionic\n  * [Working with Angular in Ionic](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/ionic-angular?home=MediaComem%2Fcomem-appmob%23readme)\n  * [Ionic extras (geolocation, leaflet \u0026 camera)](https://mediacomem.github.io/comem-webdev-docs/2017-2018/subjects/ionic-extras?home=MediaComem%2Fcomem-appmob%23readme)\n  * [Image upload](IMAGE-UPLOAD.md)\n\n\n\n## What you will need\n\n* A Unix CLI (Git Bash is included with Git on Windows)\n* [Git][git-downloads]\n* A free [GitHub][github] account\n* [Google Chrome][chrome] (recommended, any browser with developer tools will do)\n* [Node.js][node] 8+\n* [Ionic][ionic-getting-started]\n\n\n\n## Evaluation\n\n**Features**\n\n* A user must be able to register and/or log in (depending on the API's capabilities).\n* A user must be able to manage the main resources of the API's domain model:\n  * A user must be able to create new instances of all the main resources of the domain model (e.g. create Trips and Places in the Travel Log).\n  * A user must be able to modify at least one of the resources of the domain model (e.g. update a Trip's title and description in the Travel Log).\n  * A user must be able to delete at least one of the resources of the domain model (e.g. delete a Place in the Travel Log).\n* At least two mobile-oriented features must be used, for example:\n  * Geolocation of the user (e.g. to center a map on the user's location, or to determine a Place's location in the Travel log).\n  * Pictures taken with the phone's camera (works only on physical devices).\n* There must be a map showing geolocated resources (with more than one item on the same map).\n* There must be a resource list with filters or search parameters.\n\n**Implementation**\n\n* The app must follow Angular and Ionic best practices.\n* The app must use an approved API.\n* Asynchronous code must be correct (e.g. callbacks, promises \u0026 observables).\n* The app must provide clear feedback when errors are likely:\n  * When submitting a form (input might be invalid or the API call might fail).\n  * When geolocating the user (it might fail).\n* Secrets (passwords \u0026 keys) **must not** be committed to the Git repository.\n\n**Presentation**\n\nYou must provide a presentation for your app.\nThis can be **either** in the form of a **user guide** or in the form of a **pitch** as if it were a real app that you were going to sell.\nYou can choose from the following options (one is enough):\n\n* You can present the app in the README of the GitHub repository for the app.\n* You can upload your app to a store (e.g. Google Play), and write the store page as you would for a real app.\n* You can make a webcast demonstrating or selling your app.\n* You can provide a tutorial inside the app.\n* You can use any other presentation tool (subject to approval) but your user guide or pitch must be available online.\n\n### Delivery\n\nEach group must send an e-mail **no later than January 25th 2019** to Simon Oulevay with:\n\n* The link to your source code repository on GitHub.\n* The link to your webcast, presentation page or user guide (if it's not in the repository).\n\n\n\n## Useful links\n\n* [Travel Log API documentation][travel-log-api]\n* [Ionic setup][setup-project] ([completed starter project][starter-project])\n* [qimg API][qimg]\n* [TypeScript support in Atom](ATOM-TYPESCRIPT.md)\n\n\n\n[angular]: https://angularjs.org\n[angular-leaflet-directive]: https://github.com/tombatossals/angular-leaflet-directive\n[angularjs-geolocation]: https://github.com/arunisrael/angularjs-geolocation\n[chrome]: https://www.google.com/chrome/\n[comem]: http://www.heig-vd.ch/comem\n[comem-webdev]: https://github.com/MediaComem/comem-webdev\n[cordova]: https://cordova.apache.org\n[git-downloads]: https://git-scm.com/downloads\n[github]: https://github.com\n[heig]: http://www.heig-vd.ch\n[ionic]: http://ionicframework.com\n[ionic-getting-started]: http://ionicframework.com/getting-started/\n[mapbox]: https://www.mapbox.com\n[node]: https://nodejs.org/\n[qimg]: https://mediacomem.github.io/comem-qimg/\n[setup-project]: https://github.com/MediaComem/comem-travel-log-ionic-setup\n[starter-project]: https://github.com/MediaComem/comem-travel-log-ionic-starter\n[travel-log-api]: https://comem-travel-log-api.herokuapp.com\n[webserv]: https://github.com/MediaComem/comem-webserv\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmediacomem%2Fcomem-appmob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmediacomem%2Fcomem-appmob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmediacomem%2Fcomem-appmob/lists"}