Lincoln Academy

Rebuilding a school website around the parents, teachers, and staff who use it every day

Role
Solo Web Developer / Designer
Company
Lincoln Academy
Timeline
2026
Team
Operations, Administration, Finance, Lunch, Teachers, and Staff
Stack
WordPress, PHP, ACF Pro, JavaScript, Formidable, Zapier, Google SSO

In short

  • Lincoln Academy is a K through 9 charter school in Utah. During the summer, I was given the job of rebuilding its website.
  • I was the solo developer and designer for the rebuild — I planned the new structure, designed the experience, built the custom WordPress theme, migrated the content, built the internal tools, and handled the launch.
  • Inside it, a lunch ordering system for the kitchen and a field trip and event request system — plus the newsletter I send every Monday and a staff login connected through Google.
  • With the new lunch dashboard, the kitchen can add custom labels to every item, so they cut their time in half.
A MacBook Pro and an iPhone showing the new Lincoln Academy site — the "Apply to be an Eagle Here" home page on the laptop, the "This Week at Lincoln" newsletter on the phone.

The situation

By the time I started planning the rebuild, the website had grown into a mix of Divi pages, plugins, staff-only content, forms, documents, directories, newsletters, school resources, and other systems that had been added over time.

It worked, but it was getting harder to manage.

Different departments needed different things from the website, and making those changes inside the existing Divi setup was becoming more difficult.

The staff directory needed more information and better organization.

Government and school-board documents needed to stay organized and easy to find.

Staff needed private resources.

Parents needed quick access to school information.

The lunch-ordering process was becoming harder to maintain after the school moved to Infinite Campus and the old roster process stopped staying current.

The website had also become more focused on explaining Lincoln to prospective families than helping the parents, teachers, and staff who were already using it every day.

The site before the rebuild

  • The old Divi site — home, About, Apply and Calendar.

Parent and staff feedback

Before the school year ended, we sent an anonymous Qualtrics survey to parents and staff.

I wanted the rebuild to be based on what people were actually frustrated with, not just what I thought needed to change.

The survey asked four questions about how people used the website, what bothered them, and what they wanted to see improved.

Several themes kept coming up.

People said the mobile site felt like a smaller version of the desktop site instead of something designed for a phone.

Finding basic information could take several clicks.

Navigation was confusing.

Pages were slow.

The interface did not always make sense.

Parents wanted easier access to the things they used regularly instead of having to search through pages aimed at prospective families.

Lunch information was difficult to find.

People wanted quick links.

They wanted better search.

They wanted the website to feel simpler.

I used that feedback as the starting point for the new site.

My role

I was already part of Lincoln’s operations team, which meant I was working directly with the people who would use what I was building.

I talked with the lunch team about what they needed every morning.

I worked with finance on how their information should be organized.

I worked with administration on the staff directory, private resources, and other school information.

I also continued working on forms, automations, newsletters, announcements, and the other web systems the school already relied on.

This was not just a website redesign.

I was rebuilding the public site while also improving several of the workflows running through it.

At a glance

  • Half the time

    For the kitchen, with custom labels on every lunch item

    From the new lunch dashboard.

  • About 200 pages

    Rebuilt, migrated, or reorganized

    The project included public pages, program information, documents, staff resources, and school content.

  • 3 custom plugins

    Built around actual school workflows

    Staff forms, lunch ordering, and internal ticketing.

  • WCAG 2.1 AA

    Accessibility built into the new templates

    Keyboard access, contrast, labeling, and screen-reader support were tested across the site.

Old site, new site

The Divi site

The old site relied heavily on Divi and several plugins.

That made simple content changes more complicated than they needed to be.

The rebuild

I rebuilt the site as a custom PHP WordPress theme using ACF.

The layout stays controlled in code, but the content that staff actually needs to change lives in clear fields.

The Divi home page in 2025 — a two-sided menu with the logo in the middle, an "Attendance Concerns?" slide, and a bar of links for Order Meals, Infinite Campus, Canvas, Calendar & Schedule, Attendance and Apply.
Further down the 2025 home page — a clock and a Google Calendar widget beside "Lincoln Academy Charter School | Empowering Students to SOAR", a Learn More button and a short Events list.
The 2025 "What is a Charter School?" section and a "Discover the Lincoln Academy Difference" banner, written for prospective families.
The 2025 Student Life page — a dark blue side menu and three counters, 550 elementary students, 320 junior high students and 145 teachers and assistants.
The old Lunch Menu page — a short note, an "Add $ to your account" button and a monthly heading.
The new home page — the most-used links along the top, search and Donate Now in the header, and the "Apply to be an Eagle Here" slider.
The new home page's "Welcome! Where would you like to go?" — Parents, Students, Staff & Teachers, Future Families — over a Quick Links grid.
The new Staff Directory — a search box and a filter for every department.
The new Staff Portal — "Everything Lincoln staff need, in one place", with Lunch Ordering and Supply Request as quick actions.
  1. Then: The Divi site

    The old site relied heavily on Divi and several plugins.

    That made simple content changes more complicated than they needed to be.

    The Divi home page in 2025 — a two-sided menu with the logo in the middle, an "Attendance Concerns?" slide, and a bar of links for Order Meals, Infinite Campus, Canvas, Calendar & Schedule, Attendance and Apply.
    Further down the 2025 home page — a clock and a Google Calendar widget beside "Lincoln Academy Charter School | Empowering Students to SOAR", a Learn More button and a short Events list.
    The 2025 "What is a Charter School?" section and a "Discover the Lincoln Academy Difference" banner, written for prospective families.
    The 2025 Student Life page — a dark blue side menu and three counters, 550 elementary students, 320 junior high students and 145 teachers and assistants.
    The old Lunch Menu page — a short note, an "Add $ to your account" button and a monthly heading.
  2. Now: The rebuild

    I rebuilt the site as a custom PHP WordPress theme using ACF.

    The layout stays controlled in code, but the content that staff actually needs to change lives in clear fields.

    The new home page — the most-used links along the top, search and Donate Now in the header, and the "Apply to be an Eagle Here" slider.
    The new home page's "Welcome! Where would you like to go?" — Parents, Students, Staff & Teachers, Future Families — over a Quick Links grid.
    The new Staff Directory — a search box and a filter for every department.
    The new Staff Portal — "Everything Lincoln staff need, in one place", with Lunch Ordering and Supply Request as quick actions.

Key decisions

  1. Build navigation around what people actually use

    One of the biggest complaints from the survey was that it took too long to find common information.

    People should not have to click through four pages to find something they use every week.

    So I simplified the navigation and started putting the most-used links where people naturally look for them.

    That included quick-link areas, a cleaner main navigation, useful links in the footer, and links placed directly on the pages where they were relevant.

    I also added search in more places so someone who knows what they are looking for does not have to understand the school’s site structure first.

    The goal was simple.

    Make the common things easy to find.

  2. Build mobile as a real experience, not a smaller desktop site

    Parents and staff specifically called out mobile in the survey.

    That mattered because a lot of school information is checked quickly from a phone.

    A parent might be looking for a calendar date in the parking lot.

    A teacher might need a form between classes.

    Someone might be looking for a staff extension while already on the way to the school.

    I rebuilt the site so those experiences were considered from the beginning instead of being squeezed down after the desktop layout was finished.

  3. Replace Divi with something the school could actually maintain

    The old site relied heavily on Divi and several plugins.

    That made simple content changes more complicated than they needed to be.

    I rebuilt the site as a custom PHP WordPress theme using ACF.

    The layout stays controlled in code, but the content that staff actually needs to change lives in clear fields.

    That means somebody can update text, links, images, documents, or other school information without understanding how a page builder was assembled.

    The goal was not just to make the new website easier for me to develop.

    It needed to be easier for Lincoln to run after I finished building it.

  4. Build one staff directory that works differently for public and internal users

    The staff directory was one of the areas administration really wanted improved.

    Families need to be able to find teachers and staff quickly.

    They need things like names, roles, extensions, and useful teacher links.

    At the same time, not every staff member or every piece of staff information should be publicly visible.

    I built the directory so public visitors see the information meant for families, while logged-in staff can see additional internal information.

    That let us keep one structured directory instead of maintaining separate lists in different places.

The new home page

Scroll to move down the page. The numbers mark what I built into it.

The home page

  1. I simplified the navigation and started putting the most-used links where people naturally look for them.

  2. The site has several different groups using it, and each one needs something different.

  3. That included quick-link areas, a cleaner main navigation, useful links in the footer, and links placed directly on the pages where they were relevant.

  4. I also added search in more places so someone who knows what they are looking for does not have to understand the school's site structure first.

  5. Parents need to find information quickly. That includes calendars and announcements.

  6. Every Monday, I put together and send the school newsletter.

  7. Make the common things easy to find.

The full new Lincoln Academy home page — the header and slider, where-would-you-like-to-go, quick links, search, events and calendar, the newsletter, help topics, programs and the footer.

The rest of the rebuild

The project included public pages, program information, documents, staff resources, and school content.

  • The new About Us page — the SOAR header, a blue title band, and a welcome paragraph about Lincoln Academy in Pleasant Grove.

    About Us

  • The new Contact Us page — "We're here to help — reach the right person below", then Call, Email the Office and Get Directions under Reach Us.

    Contact Us, with call, email and directions

  • The new Fine Arts page — an intro to music, theater and visual art, and a Drama/Fine Arts Calendar with upcoming events.

    Fine Arts, with its own calendar

  • The new Junior High Programs page — an intro paragraph and a Jump to row for Core Classes, Electives, Athletics, Houses and Register.

    Junior High Programs, with jump links

  • The new Title 1 page — a paragraph on how Title I funds are used, then a State school report card heading.

    Title 1

  • The new Staff Directory — a search box and a filter chip for every department.

    Staff Directory, search and department filters

  • The new Staff Portal — "Welcome back! Everything Lincoln staff need, in one place", with Lunch Ordering and Supply Request as quick actions.

    Staff Portal, behind the Google login

  • The new Staff Sign-In page — "Staff accounts get in automatically", three numbered steps, and a Continue with Google button under the login form.

    Staff Sign-In, with Continue with Google

Building around the school day

The site has several different groups using it, and each one needs something different.

Parents and families

Parents need to find information quickly.

That includes:

  • Staff and teacher information
  • School policies
  • Lunch information
  • Parent Teacher Conferences
  • Announcements
  • Calendars
  • Forms
  • Program information
  • Quick links

I tried to remove unnecessary steps between the parent and the thing they are trying to find.

Teachers and staff

Staff need more than public information.

They need tools.

Administration and office staff

Administration needed school information to stay organized without every change becoming a development request.

That includes:

  • Staff information
  • Board updates
  • Government documents
  • School policies
  • Newsletters
  • Program pages
  • Announcements
  • Internal resources

I structured those areas so they could be updated from the WordPress dashboard instead of buried inside Divi layouts.

Rebuilding lunch ordering

A generic form can collect someone’s lunch choice.

That does not mean it can run a lunch program.

The lunch team needed something built around the way they actually work each morning.

A MacBook on a wooden desk showing the new kitchen dashboard — meal totals across the top and each class's order in the table below, names blurred.

Before · Step 1 of 7

Forms on the old site

The old process depended on roster information that became harder to maintain after the school moved to Infinite Campus.

The Formidable forms list in WordPress — Front Office Ordering, Fundraising, Home School Form, HR Form, In Class Hot Ordering with 5316 entries and Individual Meal Ordering with 11046 entries.

Before · Step 2 of 7

The old order forms in Formidable

The forms list shows 5,316 entries on In Class Hot Ordering and 11,046 on Individual Meal Ordering.

Close up
The old "Lunch Ordering" Google Sheet, List of Classes tab — names and emails blurred, with Ordered and Reminder columns mostly empty.

Before · Step 3 of 7

A spreadsheet, without the students

The old way you had to use Google Sheets.

It didn’t have the students, so they had to manually add them.

There was no portal.

The new lunch order form — date, grade level, teacher from the staff directory, hot meal count, special lunches, and "Orders for this date are closed (cutoff 8:40 AM)".

Now · Step 4 of 7

Teachers order for their class

Teachers submit their class orders through the site.

The form is easier to fill out, and it has a cutoff time for the kitchen staff.

Close up
The kitchen dashboard — Remind 6 missing and Email summary buttons, "6 not submitted yet", totals (433 meals, 336 hot, 41 of 44 classes in) and each teacher's order, names blurred.

Now · Step 5 of 7

The lunch manager's dashboard

The lunch manager has her own dashboard where she can see:

  • Submitted classes
  • Missing classes
  • Missing students
  • What each student ordered
  • Daily meal totals

It shows the lunches ordered and who is missing, and you can send emails with it.

The Lunch Labels page for Thursday, October 22 — 99 labels for special student meals and staff meals, a printing tip, and the label sheet with names blurred.

Now · Step 6 of 7

Labels, already filled in

Before, a lot of that work required manually checking information and typing or writing labels.

Now the website prepares much of it automatically.

They can add custom labels to every item, so they cut their time in half.

The kitchen dashboard's Day, Week and Month switch, with Export CSV and Print for state.

Now · Step 7 of 7

Day, week or month

They can go back and look at the numbers to see who ordered what.

  • Printable information
  • Downloadable CSV data

That gives the lunch staff more time to focus on actually preparing and serving lunch instead of spending the morning organizing data.

Close up

Step 1 of 7

Forms and automation

Forms are also a major part of the website.

Lincoln already had Formidable forms connected to Zapier automations, and several school workflows depended on those exact forms and field IDs.

That meant the rebuild had an important constraint.

I could change almost everything around them, but I could not casually rebuild those forms and break the automations people were already using.

I kept the existing Formidable and Zapier structure intact where it needed to stay intact, then built the new website around it.

  • The field trip request form in Formidable's builder.

The Zaps behind the forms

I built automated systems using Zapier and Google Sheets that instantly organize and route form submissions, saving hours of manual work.

  • The Zapier "All in One Lunch Ordering" Zap — a Formidable submission splits into two paths that add rows to Google Sheets, one looping over student IDs.

    All in One Lunch Ordering — a form submission split into paths, looping over student IDs into Google Sheets

  • A 2025 Zap — a Formidable new entry sends an email, creates a spreadsheet row, sends another email, then splits into Sarah/Steph Approval and Sarah/Steph Deny paths.

    2025 — a new entry, emails and a spreadsheet row, then approve and deny paths

  • A 2025 Zap — a delay, a "Totally Approved" filter, the Lincoln Academy Calendar, a spreadsheet row and an email, then IT, Facilities and Communications paths that each add a task to a master school sheet.

    2025 — once approved, onto the school calendar, then tasks for IT, Facilities and Communications

  • The Field Trip Request 4.0 Zap — a Formidable new entry, a Python step, an email, a new spreadsheet row, another email, then paths.

    Field Trip Request 4.0 — new entry, Python, emails, a spreadsheet row, then paths

  • The Field Trip Approval Zap — a spreadsheet trigger, an email, then Approved and Denied paths that each send their own email.

    Field trip approval — Approved and Denied paths

Field trip and event requests

This includes things like staff requests, school forms, event-related requests, and other workflows that route information to the right people.

The 2025 event request form — teacher or staff names, email and phone, event name and date, start, end and setup times, "Is this happening during the school day?", and location or department, with a warning about AM and PM above the times.

Before · Step 1 of 6

The 2025 event request form

It asked for the teacher’s name, email and phone, the event name and date, start, end and setup times, whether it was during the school day, and the location or department.

A line above the times warns that the event will not make it to the calendar if AM and PM are wrong.

Behind it was a 2025 Zap. Each request sent an email, added a spreadsheet row, then split into approve and deny paths for two admin approvers. Once a request was fully approved, it went onto the Lincoln Academy calendar, and IT, Facilities and Communications each got a task on a master school sheet.

Now · Step 2 of 6

A teacher fills out the form

A teacher fills out the field trip or event form on the website.

Now · Step 3 of 6

Every request gets its own ID

Zapier gives the request its own ID, like FT-123456, and logs it in the spreadsheet.

Now · Step 4 of 6

Approval comes first

Two approvers get the approval request first. Either one can approve it.

The Field Trip Request tracking sheet — lunches and drivers needed, Admin Approval or Admin Denied, the denial reason, Lunch Approval, the approvers' column and the Request ID.

Now · Step 5 of 6

Only the people who need it

After a yes, the request goes only to the people who need it: IT and Facilities if the event needs them, and the lunch team if student lunches were requested.

Close up
The Field Trip Approval Zap — a spreadsheet trigger, an email, then Approved and Denied paths that each send their own email.

Now · Step 6 of 6

A new date, without starting over

If it’s rejected, the teacher gets an email with a link to propose a new date.

That link already knows which request it belongs to, so nothing has to be retyped.

Close up

Step 1 of 6

A staff login through Google

I also built a new staff login connected through Google, so it can be protected and only staff can access it.

The staff portal became one place for internal forms, lunch ordering, tickets, directory information, calendars, and other resources.

Access is tied to staff accounts so internal tools stay private without requiring another completely separate website.

Lincoln at a Glance, 2025

I organize newsletters, blog posts, and custom forms so the office team can quickly update information, track responses, and keep parents informed without digging through spreadsheets or email threads.

  • The 2025 web version of "Lincoln at a Glance: A Quick Peek at the Week" — a short intro, then Events and Announcements as plain bulleted lists.

    The 2025 web post — events and announcements as plain lists

  • The WordPress posts list — weekly Lincoln at a Glance issues by brendonjensen with 149, 241 and 301 views, and Board Meeting Highlights October 2025 with 105.

    Weekly issues in WordPress — 149, 241 and 301 views on three issues

The Monday newsletter

My role at Lincoln also includes helping communicate what is happening around the school.

Every Monday, I put together and send the school newsletter.

I redesigned that experience so it is easier to scan and gives families a clearer view of upcoming events, announcements, and important information.

I also made calendar dates easier to use so families can add relevant events to their own calendars instead of manually creating them.

On the website, I added an announcement area for information that needs to be seen quickly.

The website, newsletter, calendar, and announcements now work more like parts of the same communication system instead of separate things.

  • The top of a Monday newsletter on a phone — "Lincoln at a Glance — Week of October 19th", then This Month's Lunch Menu.

    Lincoln at a Glance, the week of October 19th.

  • The newsletter's "This Week at Lincoln" list on a phone — each event with its date, time and an Add to calendar button.

    This Week at Lincoln, with Add to calendar on every event.

Accessibility

Accessibility was also part of the rebuild from the beginning.

A school website needs to work for more than one type of user.

I worked on:

  • Keyboard navigation
  • Better heading structure
  • Color contrast
  • Screen-reader labels
  • Alt text
  • Clear form labels
  • More consistent templates

Instead of trying to fix accessibility one page at a time after launch, I wanted the theme itself to create a better starting point for every page.

That makes accessibility easier to maintain as new content is added.

The hard problem

Refreshing the lunch dashboard could send the same reminder again because the action had no memory of who had already been contacted.

Problem

Teachers who missed the lunch-order cutoff were supposed to receive one reminder.

Instead, some teachers were getting the same reminder more than once.

That was frustrating for them and made the system look unreliable.

First assumption

My first thought was that somebody was clicking the reminder button several times or that some scheduled process was accidentally running more than once.

The number of duplicate emails made that seem like the obvious explanation.

What I found

The reminder was not actually automated.

It was triggered through a protected URL in the kitchen dashboard.

The security token stayed valid long enough that refreshing the page could run the reminder action again.

If another admin opened the same URL, it could run again there too.

Each time that happened, everyone who was still marked as missing received another email.

The system knew who still needed to submit lunch.

It did not know who had already been reminded.

That was the real problem.

Fix

I changed the reminder process so it remembers who has already been contacted that day.

Before sending an email, the system checks the day’s reminder record.

If that teacher has already received one, they are skipped.

If the email sends successfully, that teacher is added to the record.

That means refreshing the page, clicking the button twice, or having another admin open it does not send the same reminder again.

I also updated the email handling so replies go back to the kitchen instead of somewhere unrelated.

How I verified it

After the fix, I deliberately triggered the reminder several times.

The first send worked normally.

Every attempt after that skipped the teachers who had already been contacted and sent zero duplicate emails.

Then I tested with a teacher who had not been reminded yet and confirmed that person still received exactly one.

Result

The biggest change is that Lincoln’s website now feels much more like a tool for the people who are already part of the school.

I do not have a conversion number to attach to a school website, and that would not be the right way to judge this project anyway.

The result I care about is that parents can find things faster, staff have better tools, and departments can do more of their work without fighting the website.

The old website had become a collection of pages and plugins.

The new one is built much more closely around how the school actually works.

What I'd do differently

The first thing I would change is the staging and launch process.

I would want a staging environment that mirrors production as closely as possible and a narrower deployment process instead of moving more of the database than necessary.

That would make production-only issues easier to catch before launch.

I would also create a formal content-parity checklist before migration.

With a site this large, it is easy for one old page, external tool link, or program resource to get missed.

A checklist would make every old page and important link something that gets intentionally kept, replaced, redirected, or removed.

Finally, I would automate more of the final QA.

Broken-link checks, accessibility scans, and other basic tests should happen before deployment instead of waiting for a parent or staff member to find the problem.

Full stack

CMS and backend
  • WordPress
  • PHP
  • ACF Pro
  • MySQL
  • Custom post types
  • Custom roles and capabilities
Front end
  • HTML
  • SCSS / CSS
  • JavaScript
  • Responsive layouts
Forms and automation
  • Formidable Forms
  • Zapier
Authentication and integrations
  • Google SSO
  • Nextend Social Login
  • Google Calendar / ICS
Development
  • Local by Flywheel
  • WP-CLI
  • Git / GitHub