← Back to shekhargulati/52-technologies-in-2016

How to Deploy & Use shekhargulati/52-technologies-in-2016

52 Technologies in 2016 - Deployment & Usage Guide

This repository contains 42 weekly tutorials covering diverse technology stacks. Each week is a standalone project located in its own directory (e.g., 01-finatra/, 28-ionic/). This guide covers general repository setup and specific deployment instructions for the full-stack Ionic application (Week 28).

1. Prerequisites

Base Requirements (All Weeks)

  • Git 2.0+
  • GitHub Account (for contributing or cloning)

Language-Specific Runtimes

For Scala Weeks (01, 02, 03, 04, 05, 06, 10):

  • Java JDK 8 or 11 (OpenJDK recommended)
  • SBT 0.13.x or 1.x (Scala build tool)
  • Scala 2.11+

For Week 07 (Hugo):

  • Go 1.5+
  • Hugo 0.15+ static site generator

For Week 08 (CoreOS):

  • Docker 1.9+
  • AWS CLI (configured with credentials)
  • etcdctl (for cluster management)

For Week 09 (Google Cloud Vision):

  • Google Cloud Platform account
  • gcloud CLI tool

For Week 28 (Ionic - Full Stack App):

  • Node.js 4.x or 5.x (Legacy - see troubleshooting for modern versions)
  • npm 2.x or 3.x
  • Ionic CLI 1.x/2.x: npm install -g ionic cordova
  • Android SDK (for Android builds) or Xcode (for iOS builds)

2. Installation

Clone the Repository

git clone https://github.com/shekhargulati/52-technologies-in-2016.git
cd 52-technologies-in-2016

Week-Specific Setup

General Pattern (Most Weeks):

cd [week-number]-[technology-name]
# Example: cd 01-finatra
cat README.md  # Follow specific instructions for that week

Week 28 (Ionic DailyReads - Full Stack):

cd 28-ionic/dailyreads

# Setup Backend
cd backend
npm install  # If Node.js backend
# OR follow specific README if Scala/Java backend

# Setup Mobile App
cd ../mobileapp
npm install
bower install  # If bower.json exists
ionic state restore  # Restore Cordova plugins/platforms

3. Configuration

Week 09: Google Cloud Vision

Create 09-cloudvision/src/main/resources/application.conf:

google {
  cloud {
    vision {
      api-key = "YOUR_API_KEY_HERE"
    }
  }
}

Week 28: DailyReads Configuration

Edit 28-ionic/dailyreads/mobileapp/www/js/app.js or config.js:

angular.module('app', ['ionic'])
.constant('API_ENDPOINT', {
  url: 'http://localhost:8080/api'  // Change to production backend URL
});

If using Google Cloud Vision in Week 28:

.constant('GOOGLE_CLOUD_VISION_API_KEY', 'your-api-key-here');

Database Configuration (Weeks 04, 05 - Slick)

Edit application.conf in respective week directories:

database = {
  driver = "org.postgresql.Driver"
  url = "jdbc:postgresql://localhost:5432/mydb"
  user = "dbuser"
  password = "dbpassword"
}

4. Build & Run

Development Mode

Scala Projects (SBT):

cd [week-directory]
sbt run
# Access at http://localhost:8080 or port specified in tutorial

Week 07 (Hugo):

cd 07-hugo/myblog
hugo server --bind=0.0.0.0 --port=1313 --watch

Week 28 (Ionic):

# Terminal 1 - Backend
cd 28-ionic/dailyreads/backend
npm start  # or sbt run / python app.py depending on backend stack

# Terminal 2 - Mobile App
cd 28-ionic/dailyreads/mobileapp
ionic serve --lab  # Opens browser with iOS/Android preview

Production Build

Scala Projects:

sbt assembly  # Creates fat JAR in target/scala-*/
# Or
sbt docker:publishLocal  # If Docker plugin configured

Week 28 Mobile App:

cd 28-ionic/dailyreads/mobileapp

# Android
ionic build android --release
# APK generated at platforms/android/build/outputs/apk/

# iOS (Mac only)
ionic build ios --release
# Open Xcode project at platforms/ios/ to sign and archive

5. Deployment

Static Sites (Week 07 - Hugo)

Deploy to GitHub Pages, Netlify, or AWS S3:

cd 07-hugo/myblog
hugo  # Generates public/ folder
# Deploy public/ folder to hosting provider

Scala Applications (Weeks 01, 04, 10)

Heroku:

heroku create
git subtree push --prefix 01-finatra heroku master

Docker (Week 08 - CoreOS):

cd 08-coreos
docker build -t myapp .
docker run -p 8080:8080 myapp

AWS EC2 with CoreOS: Follow the cloud-config.yaml in Week 08 directory to configure fleet units.

Week 28 (Ionic Full Stack)

Backend Options:

  • Heroku: Add Procfile with web: node server.js or web: target/universal/stage/bin/myapp
  • AWS Elastic Beanstalk: eb init and eb deploy
  • DigitalOcean: Use Docker or systemd service

Mobile App:

  • Ionic View: ionic upload (legacy) or use Ionic Appflow
  • App Stores:
    ionic build ios --prod --release  # Then Archive in Xcode
    ionic build android --prod --release  # Then sign APK
    

6. Troubleshooting

Legacy Dependency Issues (2016 Codebase)

Problem: npm install fails with Node 14+ or modern Python Solution: Use Node Version Manager (NVM) to switch to Node 4.x or 6.x:

nvm install 6.17.1
nvm use 6.17.1
npm install

Problem: SBT version conflicts Solution: Check project/build.properties in each Scala week. Install SBT 0.13.18 for older projects:

# In project/build.properties
sbt.version=0.13.18

Week 28 Ionic Specific Issues

Problem: ionic serve shows white screen Solution: Check that all Bower dependencies are installed:

cd www/lib
bower install  # Run if lib/ folder is empty

Problem: Android build fails with SDK errors Solution:

android update sdk --no-ui --filter build-tools-23.0.1,android-23
# Or use Android Studio to install API 23 (Android 6.0) SDK

Problem: CORS errors when connecting to backend Solution: Enable CORS in backend or use Ionic proxy:

// ionic.config.json
{
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "http://localhost:8080/api"
    }
  ]
}

Google Cloud Vision (Week 09)

Problem: 403 Forbidden errors Solution: Ensure billing is enabled on GCP project and Cloud Vision API is activated in Google Cloud Console.

General

Problem: Tutorial links in README are broken Solution: This series was discontinued at Week 42. Some external dependencies may have changed. Check the specific week's GitHub issues or submit a PR with updates.

Contributing: To fix errors or add guest posts:

git checkout -b fix-week-[number]
# Make changes
git commit -m "Fix: description"
git push origin fix-week-[number]
# Open Pull Request