Pre-launch Checklist
You've installed jekcms, imported content, picked a theme, and everything looks right in staging. Before pointing DNS at the new install, walk through this checklist. Each item takes 30 seconds to a few minutes — together they prevent the most common "oh no, production" moments.
Security
- [ ] Change the admin password to something strong. The installer accepts weak passwords on purpose so you can get in fast — don't leave that password in place. Users → Your profile → Change password, use 16+ characters.
- [ ] Delete the default "Welcome to jekcms" post. It's seed content; it shouldn't be public. Posts → All Posts → Trash the welcome post.
- [ ] Enable HTTPS and force a redirect. In
.htaccess:
``apache RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ``
- [ ] Tighten CSP if you know which third-party domains you need. Settings → Security → Content Security Policy. Default is permissive; tightening is optional but cheap hardening.
- [ ] Verify license is activated. Settings → License → Status: Active. If it says
Unlicensed, paste your key and click Activate.
Content and SEO
- [ ] Set the real site name and tagline. Settings → General → Site Title + Tagline. These appear in
<title>tags, social cards, and emails. - [ ] Upload a default OG image. Settings → SEO → Default Open Graph Image. 1200x630 PNG or JPG. This shows when someone shares a URL without its own featured image.
- [ ] Set the timezone. Settings → General → Timezone. Scheduled posts fire against this timezone — getting it wrong means posts publish hours off.
- [ ] Add Google Search Console verification. Settings → SEO → Verification → Google Site Verification. Paste the meta tag content value.
- [ ] Submit the sitemap to GSC. In Google Search Console: Sitemaps → Add a new sitemap →
sitemap.xml. jekcms auto-generates this at/sitemap.xml— no plugin needed. - [ ] Connect analytics. Settings → Integrations → Google Analytics → Measurement ID (the
G-XXXXXXXXXXformat). jekcms injects the tag sitewide. - [ ] Review and delete unused theme files. Themes ship with demo content, placeholder images, and sample pages. Sweep
themes/your-theme/demo/and delete anything you don't use.
- [ ] Configure SMTP. Settings → Mailer → SMTP. PHP's
mail()function is unreliable; SMTP is not. Any transactional provider works — SendGrid, Postmark, Mailgun, AWS SES. - [ ] Test the contact form end-to-end. Submit from the public site, confirm the email arrives in the admin inbox, reply, confirm the reply threads properly.
- [ ] Send a test welcome email. Settings → Mailer → Send test email. If it lands in spam, set up SPF and DKIM at your DNS provider — instructions under the same page.
Automation and performance
- [ ] Set up cron for scheduled tasks. Scheduled posts, email digests, and the sitemap rebuild all run from a cron hook. Add to the server crontab:
``bash * php /path/to/jekcms/cli.php cron:run >/dev/null 2>&1 ``
- [ ] Warm the page cache. Tools → Cache → Warm cache. Pre-renders the top 200 pages so the first visitor after launch doesn't hit a cold cache.
Backups
- [ ] Back up the database.
mysqldumpvia cron, or the built-in Tools → Backup → Run now button. Store off-server (S3, Backblaze, anywhere not on the same machine). - [ ] Back up the config file and uploads.
config/config.phpholds your DB password and license key;uploads/holds every image you ever uploaded. Back them up weekly at minimum. - [ ] Verify the backup restores. Download the backup to your laptop, spin up a local jekcms with
install.php, restore the SQL dump. If it imports cleanly, your backup works. If it doesn't, fix it now, not during an emergency.
Final launch step
- [ ] Flip DNS. Change your domain's A record (or CNAME) to point at the new server. Propagation is usually fast if your TTL was set low (300s) the day before.
- [ ] Monitor for 30 minutes. Watch
logs/php-errors.logand the live analytics dashboard. Most launch-day problems surface in the first half-hour.
If everything on this list is ticked, you're in good shape.