sheet index

this page

  1. 01summary
  2. 02Context
  3. 03What was built
  4. 04Delivery
  5. 05Current state
  6. 06Showcase

home page

  1. 01introduction
  2. 02about
  3. 03interfaces
  4. 04skills
rev. 2026.09

Atılım Connect

prospective student portal · Atılım University

summary

problem

The main site addressed the whole institution; there was no fast, easy-to-update channel focused on the prospective student's decision journey. Campus tour applications ran over the phone.

approach

Content separate from code, managed entirely from the panel; automation proposes, a person approves; unused modules are removed, versions kept current with tests.

outcome

Live since July 2025: an SMS-verified form engine, approved academic sync with the main site, analytics that write nothing without consent; day-to-day running is in the content team's hands.

  • laravel
  • filament
  • livewire
  • tailwind
  • mysql
  • playwright
  • gitlab ci
open site

Context

Atılım Connect is a portal for prospective students to get to know the university, explore departments and apply for things like campus tours, fed entirely from its admin panel. I am the project's only developer; server and deployment processes run together with the institution's DevOps team.

Problem and goals

The main site addressed the whole institution; there was no fast, easy-to-update channel focused on the prospective student's decision journey. Goals:

  • Bring everything a prospective student looks for (departments, fees, scholarships, campus life, application forms) under one roof.
  • Make all content manageable from the panel, without a developer.
  • Run high-demand processes such as campus tours through verified online forms instead of the phone.
  • Keep academic structure data (faculty, department, head) consistent with the main site; end double data entry.

Principles

  • Content is separate from code. From the hero to statistic cards, from menus to news, everything is managed from the panel; a design change does not stop content operations.
  • Automation proposes, a person approves. The sync that pulls data from the main site never changes a record on its own; it lists differences and leaves the decision to the editor.
  • No dead weight. Seven unused modules (appointments, scholarship calculator, FAQ and similar) were identified and removed from the codebase entirely.
  • Versions stay current. Framework and package versions are upgraded without delay, verified by automated browser tests.
  • Visitor data stays with us and is collected with consent. Analytics writes not a single row before cookie consent.

What was built

SMS-verified form system

Campus tour application: a dynamic form with SMS verification.
Campus tour application: a dynamic form with SMS verification.full size

Campus tour applications ran on phone traffic. I wrote a form engine in which every part, fields, button labels and info boxes included, can be built from the panel.

  • The phone number is verified with a one-time SMS code, the email address with a confirmation link.
  • The school field searches live across more than 14,000 school records in Turkey.
  • Submissions land in the panel and notify the responsible staff by email.
Form management: title, description and message settings.
Form management: title, description and message settings.

Approved academic sync with the main site

As details such as department heads, phone numbers and web addresses changed on the main site, the portal fell behind. I wrote a command that scans the main site regularly; it writes the differences it finds to a queue as "pending" and shows the current value beside the site's value in the panel, with a confidence score. The editor applies or ignores each difference with one click; the system never changes a record on its own.

Site sync: list of differences and the apply / ignore flow (personal details blurred).
Site sync: list of differences and the apply / ignore flow (personal details blurred).

Turkish was the hard part here: dotted and dotless I conversions, spelling variants such as "Anabilim Dalı" and "Ana Bilim Dalı", and department names with their word order reversed called for matching based on word sets.

Visitor summary in the panel; the figures shown are local test data.
Visitor summary in the panel; the figures shown are local test data.

We wanted to see visitor behaviour without moving the data elsewhere. I wrote a session-based tracking layer: device type, page views and popular pages are summarised in the panel. Tracking does not run at all until analytics consent is given in the cookie banner; without a decision, not a single record is written.

Content operations in the panel

Pulled news: publishing approval for news from the main site.
Pulled news: publishing approval for news from the main site.

News published on the main site is pulled automatically; in the panel's "Pulled News" list the editor toggles which items appear on the portal. Hand-written news, announcements, events, the hero, menus and pages are managed from the same panel. Day-to-day running of the portal is in the content team's hands.

Design system refresh

Home page on a phone.
Home page on a phone.

To leave the template look of the first version behind, the whole front end was rebuilt on design tokens in summer 2026: an original type pairing, variables derived from the institution's colours, a header with a mega menu, an infographic "Why Atılım" page and a single template with a sticky sidebar for inner pages. New sections now open with the same component set.

Why Atılım: ten cards with SVG infographics.
Why Atılım: ten cards with SVG infographics.full size
Campus life page.
Campus life page.full size
News list.
News list.
News detail page.
News detail page.

Keeping the framework current

The project moved from Laravel 11 to 12, Filament 3 to 5 and Tailwind to 4. The big jumps were made in an isolated working copy; the list and create screens of 36 panel resources were verified with Playwright before merging. Deployment also moved from copying files by hand to a scripted pipeline on GitLab CI.

Delivery

The live portal, the content management panel, the SMS-verified form engine, sync with the main site and in-panel visitor analytics.

The figures below were read from the development copy's database; content counts in production are higher.

Academic units14 (7 faculties, 4 schools, 3 institutes), 76 departments
Content102 pulled news items, 54 announcements, 43 events, 15 managed pages
School records (form search)14,125
Pending sync proposals250
Commits173
Database migrations76
Panel resources25

Roadmap

PeriodWhat happened
Jun 2025Setup: Laravel + Filament skeleton, academic hierarchy model (faculty, school, institute, department), multilingual groundwork, hero and carousel management, first version of the form system
Jul 2025Going live: production settings, media and asset pipeline, first real content
Sep 2025Operations: visitor analytics tracked from the panel; scope cleanup (seven unused modules, more than 29 files and 8 tables removed)
Oct – Dec 2025Post-launch improvements and small fixes
Mar – May 2026Infrastructure maintenance; the form system grows into its SMS-verified version
Jul 2026Major refresh: new design system, Laravel 12 + Filament 5 + Tailwind 4, approved sync with the main site, GitLab CI deployment, rewritten "Why Atılım" and "Campus Life" pages
Aug – Sep 2026Content and measurement touch-ups

Current state

Live since July 2025, development ongoing. The English version was temporarily closed, with its data kept, because there was no capacity to keep its content current; the steps to reopen it are documented.

What I learned

  • Turkish is its own discipline in text processing. Because of dotted I conversion, suffixes breaking word boundaries and different spellings of the same name, plain text comparison did not work for the sync; normalisation and word-set matching were needed.
  • Removing features is engineering too. Clearing every trace of seven modules, models, panel resources, migrations and tables included, took more care than adding them; but it lowered the maintenance load for good.
  • Multilingual is not free. Building TR / EN groundwork from the start was right; keeping English live without capacity to maintain it was wrong. Closing it with the data kept and documenting how to reopen gave the best of both.
  • Big upgrades do not reach the main branch untested. The Filament 5 move was done in an isolated copy, verifying real create-edit-save flows with browser automation; there were no surprises in production.
  • Working with institutional processes is part of technical decisions. The deployment pipeline followed the model the DevOps team preferred; settling rules early, such as running database migrations by hand and under control rather than in deploy scripts, prevented surprises.

Showcase

Atılım Connect prospective student portal home page: campus images and the "Why Atılım?" listportal
Atılım Connect admin panel, content editoradmin panel
Case studies