Chih-Hao Chen

Full-Stack Developer



  • 2019 - 2020
    Portfolio website with Vue.js.

    This project is developed mainly with Vue.js. The generated static HTML files are deployed in GitHub. My initial purpose in building this website with JS is to separate the front-end development from the back-end database. Thus anyone can reuse my repository to build up their portfolio website by configuring their API calls and populating their back-end database.

    The database is in JSON format deployed in Firebase, while all the images and PDF files are stored in Amazon S3. Once the API data gets fetched, Vuex, a well-known framework for state management, is exploited to mutate the state variables associated with the database data. The Nuxt framework has been embedded in this repository for SPA (Single Page Application). Finally, as for the UI components, Vuetify is used for the material design of this portfolio side-project. This website is also compatible with popular browsers in mobile devices.

    • Use Vue.js for front-end
    • Exploit Google Firebase to store JSON format data
    • AWS S3 Storage
    • Store the associated files, including PDF files and images on AWS S3
    • Employ Nuxt.js for SPA, and Vuex to manage the associated states variables.
    • Material design with Vuetify.js
    TECHNOLOGIES
    Vue.js Firebase AWS S3 Nuxt.js Vuetify.js

  • 2019 - 2020
    iOS app - News Client

    The original purpose of this project is to extend the previous work on a mockup of Apple abpp Store. This App makes API requests from News API that offers news articles and headlines from over 30000 sources. Therefore the reason I chose this topic is that not only can I hone my skills in iOS application development but keep a close eye to the things around the world.

    Later I found that even though there are quite many Apps offering News service, I still do not see a good enough App to read news articles in different languages. Therefore I intend to continue this project to make it a news client App for polyglots so that they can read and save the articles in their journeys of learning languages.

    • The whole layout is made with a programmatical auto-layout without the interface builder (storyboard);
    • API requests and asynchronous fetch from News API;
    • Use programmatical auto-layout to animate UI components and associated controllers;
    • Use snaping collection flow layout for browsing articles in different categories;
    • Pagination when fetching data;
    • Pull to refresh data;
    • Currently, the 3rd-party library Realm is employed for pesistence that allows saving the articles of interest;
    TECHNOLOGIES
    Swift News API Realm UIKit

  • 2019 - 2019
    iOS app - App Store Mockup

    This app mocks up the Apple app store with programmatical auto-layout. It consists of a snapping collection view layout to allow users to swipe left or right with ease. Besides, this app also exploits the layout constraints to perform UI animations when swiping down, and floating views associated with scrolling.

    Furthermore, it allows users to search for music singles or albums with pagination and look for apps with keywords. All the apps found can be clicked further to show users the screenshots, reviews, prices, etc.

    • The whole layout is made with a programmatical auto-layout without the interface builder (storyboard);
    • API requests and asynchronous fetch in JSON format;
    • Use programmatical auto-layout to animate UI components and associated controllers;
    • Use snaping collection flow layout for browsing articles in different categories;
    • Pagination when fetching data;
    TECHNOLOGIES
    Swift iTunes Search API UIKit

  • 2017 - 2018
    Backend REST-API for TrainingBuddy Concept

    This back-end API was deployed in DigitalOcean and could accessed through API requests. It was built based on MongoDB, a non-SQL database, with Node.js.

    The authentication process covers Facebook, LINE, and email authentication presently. As for the email authentication, the developed back-end will send the user a token for users to perform operations associated with authorization.

    Socket-io is employed to allow users to chat with each other once they get enrolled in the same events. Besides, the service of Amazon S3 is exploited to upload images/pictures. The back-end server does not store the photos to protect users' privacy.

    Users and trainees can search the database either with the names of users or the names of events. Furthermore, users can review activities and trainers. Then a recommended list of the related activities can be offered to users.

    • Authentications with Facebook, LINE, and emails are supported;
    • Non-SQL database MongoDB is employed for the database of users and events;
    • Users can only change or remove the activities created by themselves;
    • Chat rooms are available for the enrolled users in the same activities;
    • AWS S3 service is integrated into the back-end for storing images for privacy.
    TECHNOLOGIES
    Node.js Express MongoDB Socket-io AWS S3