Skip to main content

Project Launch

It has been a while since I've posted anything which is more to my detriment than anything else. I teach a class at UMASS Lowell and one of the things that I emphasize to my students to journal each week as they go through the learning curves that they have. The major reason for that is that it's very possible to do all the natural floundering around you do as part of learning something, find a winning combination, and then forget how you got there, especially after a few days (hours? minutes?) or not even realize what combination of keystrokes got you to where you are.

Over the past year or so, I've dived into several new technologies and techniques ranging from large scale React applications to cloud based testing servers to CI/CD issues. It's been a blast and mostly successful although there were many many of these learning curves where the actual steps to go back and recreate it might not be as smooth as they should be. As a result, I'm starting a series (with the best of intentions of finishing it) of starting a site from scratch and creating as thoroughly and with an up to date development environment and CI/CD system as possible in order to implement and document the techniques used. This will more or less be a microcosm of the last few years work.

The focus is on the architecture and environments rather than the actual site itself. In fact, the site is going to have a bare minimum of elements in it which are only there in order for the dev site to have something to act on, the git repos something to house and something to appear on the screen in order to prove that it worked. That being said, the site design does call for multiple technologies (React and ColdFusion), frameworks and libraries (such as Bootstrap and CKEditor) and scaffolding that will need to be set up along the way and an attempt at managing the process through Jira and Confluence.

Since it's easy to lose track of what we're trying to accomplish let alone why we want to accomplish it, I'll try to put a brief description of what the issues involved are and why they are important and then walk through the steps needed to recreate the end result.

Enjoy



Comments

Popular posts from this blog

Creating Stories and Tasks in Jira: Personas and our Software Development Team

Part of the CI/CD Development Series The next step is developing who is on our hypothetical development team. Given that it has a React front end and ColdFusion as the Server Side language, I came up with the following personas, all of which have their own needs and considerations for our development environment. I've listed all the jobs that need doing, not the people involved since, even on a small team or a team of one, these "hats" are all worn by someone, even if it's the same person. Personas for our Project Dev Ops Coordinator - The person responsible for smooth and accurate deployments CF Developer - The person responsible for the API and fulfillment code development and maintenance. React Developer - The person responsible for the front end development Database Coordinator - The person responsible for the schema, data, up time and, presumably the testing databases used by the developers. Lead Developer - The person responsible for coordinat...

CF: Scripting amidst the tags

Recently I had to do a quick "utility" page where I needed to see how many files from a directory listing had been recorded into a database. I've been writing about 98% of my CF code in script syntax but, since it was quick and easy, I did this quickly in tags because it was outputting directly to the browser. In doing so, I made an interesting discovery in that, when you use closures, even in tag based pages, you can write cfscript. Here's the example Get the directory listing:  < cfset alljs = directoryList(expandpath( '/src' ), true , "path" , "*.js" )> Get the database listings and convert it to an array < cfquery name = "alljsQ" datasource = "blah" > select * from sitefiles where filename like '%.js%' </ cfquery > < cfset recordedFiles = valuelist(alljsQ.filename).listToArray()> Use a filter function to weed out the files I'd already recorded < cfset missingFiles = alljs.fi...

More on Site Architecture / CI/CD / and Repos

We're starting to move from the high level overview and more into the details of our project.  Architecture We established that we using React as our front end technology and ColdFusion as our server side. At a more granular level, we'll be using React with Redux for our front end app and we want our server side to be not just "ajax" enabled but a true REST API. To this end, we're going to incorporate Coldbox from Ortus Solutions. Repos These two code bases have different needs, and possibly locations, when they are deployed. As a result, we're going to have two repositories: one for the React and another for the API. This will allow us to keep our code separated and cleaner all the way through to deployment.  For each of these repos, we'll follow the procedure we laid out previously with the MASTER branch being used to deploy to production and a DEVELOPMENT branch being used for active work which is then fed into the Master branch via pull requests.  Test...