Atılım Connect
prospective student portal · Atılım University
summary
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.
Content separate from code, managed entirely from the panel; automation proposes, a person approves; unused modules are removed, versions kept current with tests.
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.
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 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.

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.

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 analytics that need consent

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

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

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.
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 units | 14 (7 faculties, 4 schools, 3 institutes), 76 departments |
| Content | 102 pulled news items, 54 announcements, 43 events, 15 managed pages |
| School records (form search) | 14,125 |
| Pending sync proposals | 250 |
| Commits | 173 |
| Database migrations | 76 |
| Panel resources | 25 |
Roadmap
| Period | What happened |
|---|---|
| Jun 2025 | Setup: Laravel + Filament skeleton, academic hierarchy model (faculty, school, institute, department), multilingual groundwork, hero and carousel management, first version of the form system |
| Jul 2025 | Going live: production settings, media and asset pipeline, first real content |
| Sep 2025 | Operations: visitor analytics tracked from the panel; scope cleanup (seven unused modules, more than 29 files and 8 tables removed) |
| Oct – Dec 2025 | Post-launch improvements and small fixes |
| Mar – May 2026 | Infrastructure maintenance; the form system grows into its SMS-verified version |
| Jul 2026 | Major 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 2026 | Content 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
portal
admin panel


