Index – MyPage CMS
An easy-to-use website editor for your next project


MyPage CMS is a free, easy-to-use content management system written in JavaScript, jQuery, jQuery UI, and PHP by John Micallef. It allows you to create a responsive website within minutes, simply by uploading the MyPage CMS app to your hosting server's root folder, and by visiting the editor at It comes with a range of eye-catching themes that can be changed with just a click, each of which can be easily customized and edited with beginner-level knowledge of CSS. It also provides server-level tracking features, free and out of the box. It requires no databases and uses plaintext files for everything, making setup a breeze!

MyPage CMS was designed with clients in mind. The editor itself is so simple that a web design client will be easily able to edit the content of their website. This presents an alternative to Wordpress, which can be so packed with features, clutter, and noise that making changes can be daunting for non-tech-savvy clients. Uploading changes to the website is instant – no FTP required – just hit 'Save'!

MyPage CMS has also been designed for developers. Most of the code is extremely easy to read, so extending and customizing it shouldn't be a challenge. HTML, PHP, JavaScript, and inline CSS can be added directly into the editing window.

MyPage CMS is available as a free download at It has been released as open-source software. Anyone who wants to make improvements to the codebase is encouraged to do so.

New Features in v0.8

v0.8 released February 16, 2021.

  • Highly sophisticated contact form abuse protection that checks emails against a number of factors and uses a strike system to determine if an email should be sent to spam or to your inbox.

  • An elegant new font for the 'Bewitched' theme.

  • Beautiful JavaScript fade-ins added to the home page of all themes.

  • Two new themes – 'Barber' and 'Feature' – that include beautiful typesetting, a new font, a parallax scrolling effect, and a high-performance, randomized header slideshow (just drag and drop your images into the theme's 'Backgrounds' folder).

Latest Themes

Future Features

  • A site-wide query string to disable tracking for 30 days, that is unique to a website to prevent unauthorized blocking.

  • A feature in Settings to download updates automatically, by having a button to download a zip from the MyPage CMS servers containing the latest install of the application. Update.php would move user content to a /user_content_backup/ folder in the site root, extract the update zip into the site root, overwriting all application data, and then the backed up user content would be copied (not moved!) to its original location.

  • Site name reflected in the MyPage app's page name, so that, if you're editing three MyPage websites at once, you can easily tell which one's which in your OS' task manager.

  • Significantly reduced file size for gallery image thumbnails, for reduced memory usage and significantly faster load times.

  • Main panel will fade to 0.3 alpha transparency during load events.

  • HTML list maker, providing functions that can prepend/append list tags to the current text selection in the editing window, change the existing list tags in the selection, make a single line a list item, or strip list tags out of the selection altogether.

  • Increased brute-force hacking protection via variable lockout periods in the event of an excessive number of failed logins within a certain timeframe.

  • Zoom functionality in lightbox gallery images.

  • Outbound link tracking.

  • Refactored codebase to remove unused sections of code and to change quirky ones, as well as bringing massive performance increases by separating functions from their sections, so that only the functions get called by AJAX, rather than the whole section.

  • Python gallery maker app for Windows.

  • File size in download buttons.

  • Delete tracking entry option.

  • Non-modal alert system with loading until AJAX success.

  • Remote logout system.

  • Animated backgrounds (snow, rain, etc).

  • Unsaved change protection in editors.

Known Issues

  • If a gallery is closed during image load, the load event handler will display the previous button when the image gets loaded into memory.

  • Tracking day export function doesn't work if the visit count has been updated on the server but not in the data list. Need to find the correct filename to export without its prefixes, or to refresh the data list before export.

  • Secret questions change functionality in settings panel is echoing plaintext password in AJAX return alert.

  • Blog posts need to be created at the top of the list, because, if there’s 100 posts, dragging the newest to the top of the list will induce homicidal ideation in the user.

  • Tracking data needs to be organised by month and year, since, in ten years, the list will be big enough to crash the browser.

  • Tracking highlight needs to be cleared when exiting view mode in single-page mode.

  • Tracking panel enters viewing mode during zoom event on iOS. Need to test document width as opposed to window width for resizes.

  • Uploads occasionally stall at 2%, and it might happen only after an uploaded item has been deleted. Cause not yet found.

  • Admin panel favicon request 404s triggering tracker multiple times on admin panel login screen. Need to only track if requested resource is not a favicon.

  • Backup viewers don't have loading spinners.

  • A 'Read More' link on blog posts absolutely has to be added.

  • Blog excerpts need to be echoed with nl2br.

  • Blog post timestamps are completely wrong and need to be generated via the new object method.

  • Admin panel needs a loading indicator, timeouts, and auto-retries for all AJAX calls (high-priority). This should help with the 0 error issue. Info about AJAX retries and limits here:

  • Tracking data needs to be unloaded before load.

  • Blog post titles need to be truncated further in editor to make room for buttons.

  • Keyboard keys lose their bindings in image galleries when the browser window loses focus. Need to rebind keys on thumbnail click.

  • Duplicate pages occasionally appear in blog and editor, even though they're not reflective of what's on the server. They're duplicate entries in sort_whatever.txt. A function will be added to automatically clear the sorted arrays of duplicate entries, maybe as a Troubleshooting option. A simple fix is to manually delete the duplicate entry by going to sorted_pages.txt or sorted_blog.txt in the admin folder. UPDATE: Caused by restoring backup!! Need to test for existing entry before restoring the entry inside the stored sort order.