CIS-294 Site Installation Walk-through for Winter 2026
Screenshots of site setup on Docker for MacOS and Windows.
Screenshots of site setup on Docker for MacOS and Windows.
I have posted this information elsewhere, but wanted to consolidate this info in a single place for future reference. I recommend the following settings for git and Visual Studio Code for web development, especially in group projects. These settings will help keep code consistent and reduce git problems when working across multiple platforms, including Windows and MacOS development and HFC's Linux web servers.
This video demonstrates how to install Git source control management on Windows then configure ssh keys for secure communication with remote servers like HFC's GitLab server or public providers like GitHub, GitLab, or BitBucket. This page also contains a list of important settings for your git projects.
This quick demo explains the basics of PHP objects.
Here are some rough notes on querying Symfony users by role. It's tricky because the roles are stored in a JSON array in the database, and Symfony does not allow using JSON functions by default.
When developing a complete Content Management System (CMS), the content for web pages is normally stored in the database. However, for our CIS-294 projects, we are taking a more hybrid approach where content is built into the Twig templates, with dynamic information added as needed.
This is covered somewhat in Part 4 of my TV Watchlist tutorial series, but this tutorial provides a simple approach for generating multiple different pages in your CIS-294 websites.
Starting with the Fall 2022 Semester, CIS-294 web projects now include automated testing for basic security and code quality. These tests run every time commits are pushed to the website git repository, and we will not merge changes to the production branch until all tests pass.
Some of the included tests can be run in your local environment before committing, helping you to check for mistakes and write higher quality code.
I have created a new YouTube series on[Building a TV watch list in Symfony. This six-part series demonstrates the basics of building a Symfony web project to store and display items in a TV watch list. This starter project is not feature complete, but demonstrates the principles needed to get started with Symfony, Twig templates, and the Easy Admin bundle.
Windows Terminal is a free download from Microsoft that provides a much better command line experience for PowerShell, Git Bash, and WSL.
When writing Symfony applications, you may find that you need to reuse some of your code over and over. A common example of this would be when writing separate controllers to manage different entity types in a REST API, where you need to authenticate the authorization header token for each request. Rather than including this method in each controller, this reusable code can be moved to a service which can be injected into all of your controllers as a dependency. With Symfony's autowiring enabled, adding a service is a quick and easy solution to avoid repeating code.
Drupal developer Jacob Rockowitz recently posted a blog series on Good Drupal Leadership. While this series does mention some things specific to Drupal and the Drupal community, it's actually an excellent general overview for any large software implementation project, including the types of group projects found in CIS-294. I highly recommend reading Jacob's series to get an overview of what you'll encounter during your semester in HFC's Software Engineering class. The posts are short and should only require 15-20 minutes to read the entire series.
It's important to make sure that all REST API traffic is properly secured, but it's not practical to force applications to provide login credentials every time. Instead the API should return a reusable token during login, then the application should verify this token in the Authorization header for every request. JSON Web Tokens can be a good tool to satisfy this need.
The Symfony Security documentation page provides detailed information about all of the topics below. This page will be a guide featuring the specific needs of our CIS-294 Software Engineering projects. Please note that this information was updated in Winter 2026 and corresponds to the Symfony 8.0 release. These notes will cover creating a user entity, adding a user via phpMyAdmin, and getting started with available authentication options.
Accessibility is not a black and white checklist, but rather a mindset of inclusion that guides how we create and measure the effectiveness of content for all users. HFC has many diverse populations, including English Learners (ELL/ESL), people with varying ability/disability and reading level, people who use assistive technologies, and people using phones/mobile devices to access our websites, and our accessibility practices create a better experience for everyone.
Visit the HFC Accessibility SharePoint site for the latest information.
This video tutorial demonstrates how CIS students at Henry Ford College can back up projects the cislinux server to HFC's GitLab service for version control long-term storage. See my other tutorials for more details about using git to manage project history and changes.
This new video covers the following topics: Create ssh keys for authentication; load ssh agent in git bash; create and clone a new project; make changes and push to remote repository; publish changes to a web server.
As part of this project, we'll be creating an API, or two: a database API to handle all database functionality, and a RESTful API to allow the desktop application(s) to connect to the Database API over the web. If you're not super familiar with APIs, these short videos provide an introduction.