Chatter
DUE Wed, 09/18, 2 pm
This assignment may be completed individually or in teams of at most 2. You can partner differently for each lab.
Chatter
is a simple chat app. In this
first iteration, user can only post textual chatt
. In subsequent labs,
we will add, in turn, audio, authentication, image and video, and location information.
Each subsequent lab will build upon this lab only, not on each other, though
you’re free (but not recommended) to make them cumulative.
This lab is more a tutorial than a lab. For the front end, it gets you to set up your IDE and to know the development tools and environment. It also help you set up the back end server that you will be using for all the other labs.
This lab can be completed mostly by cut-and-pasting code from the spec. However, you will be more productive on the quizzes and your course project if you do understand the code. As a general rule of thumb, the less time you spend reading, the more time you’ll spend debugging. If you spend time to understand the code, the front end of the lab should take less than 1 hour to complete and the back end about another 1.5 to 2 hours. You are encouraged to complete this lab in two sittings, starting with the front end.
Specifications
There are TWO pieces to this assignment: a front-end mobile client and a back-end server. For the front end, you can build either for Android in Kotlin with Compose or iOS in Swift with SwiftUI. For the back end, you can build using either a Go-atreugo, Python-Django, or Rust-axum stack.
You only need to build one front end, AND you must build the back-end using one of the three alternative stacks.
IMPORTANT: unless you plan to learn to program both Android and iOS, you should do the labs on the same platform as that of your course project.
The back-end server is a few lines of code with a couple lines of SQL thrown in. The majority of work in the back end is to set up a server which you will use to host the back end for all subsequent labs.
Once you have built and tested both your front end and back end, you MUST get your front end talking to your back end.
Objectives
Front end:
- To familiarize you with the mobile development environment
- Set up IDE (Android Studio or Xcode)
- Start to learn Kotlin/Swift syntax and language features
- To introduce you to declarative UI with reactive state management (Compose for Android, SwiftUI for iOS)
- Observe the unidirectional data flow architecture
- Learn how a view is composed of different UI elements
- how to navigate between views
- actions associated with each UI element
- how to present a list of data items
- how to submit HTTP GET and POST asynchronously
- how to convert to/from JSON
- how to install self-signed certificate
Back end:
- How to generate self-signed private key and its public key certificate
- How to set up an HTTPS server with firewall rules
- How to set up a PostgreSQL database and table
- Introduction to URL path routing
- How to interface URL path handlers with PostgreSQL
- How to use JSON for HTTP request/response in the back stack
Prepared for EECS 441 by Sugih Jamin | Last updated: January 9th, 2024 |