PHPackages                             attogram/attogram-framework - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. attogram/attogram-framework

AbandonedArchivedProject[Framework](/categories/framework)

attogram/attogram-framework
===========================

The Attogram Framework provides developers a PHP skeleton starter site with a content module system, file-based URL routing, IP-protected backend, Markdown parser, jQuery and Bootstrap. Core modules available to add an integrated SQLite database with web admin, user system, and more.

v0.8.2(9y ago)7681(MIT or GPL-3.0+)PHPPHP &gt;=5.3.3 || ^7.0

Since Jun 1Pushed 9y agoCompare

[ Source](https://github.com/attogram/attogram)[ Packagist](https://packagist.org/packages/attogram/attogram-framework)[ Docs](https://github.com/attogram/attogram)[ RSS](/packages/attogram-attogram-framework/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (10)Dependencies (6)Versions (31)Used By (0)

Attogram Framework
==================

[](#attogram-framework)

\[//\]: # ( Attogram Framework - README.md (markdown) - v0.1.19 )

[![Build Status](https://camo.githubusercontent.com/01fecc75e345a7c7f74bd53cd1cf03393c134be02a1f4b2b2c678ca83ceb3e30/68747470733a2f2f7472617669732d63692e6f72672f6174746f6772616d2f6174746f6772616d2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/attogram/attogram)[![Latest Stable Version](https://camo.githubusercontent.com/cc2cc371e52ad85c9398c40d6c3f2e3c44e1ef34b1d138f2fe7529f0fffeb864/68747470733a2f2f706f7365722e707567782e6f72672f6174746f6772616d2f6174746f6772616d2d6672616d65776f726b2f762f737461626c65)](https://packagist.org/packages/attogram/attogram-framework)[![Latest Unstable Version](https://camo.githubusercontent.com/f719fc5a0eb920ee960d2412435f900bc45ea970ed3858467245284b7fe2914a/68747470733a2f2f706f7365722e707567782e6f72672f6174746f6772616d2f6174746f6772616d2d6672616d65776f726b2f762f756e737461626c65)](https://packagist.org/packages/attogram/attogram-framework)[![Total Downloads](https://camo.githubusercontent.com/7383ac08bfe93f99e91e89b6bcc6c5e745b643693e70b335ac3d14bcb1e835d5/68747470733a2f2f706f7365722e707567782e6f72672f6174746f6772616d2f6174746f6772616d2d6672616d65776f726b2f646f776e6c6f616473)](https://packagist.org/packages/attogram/attogram-framework)[![License](https://camo.githubusercontent.com/4eddbdfd1b9f345689ef3753b29bea769920ae84f052d9aec66fe8df302be7b3/68747470733a2f2f706f7365722e707567782e6f72672f6174746f6772616d2f6174746f6772616d2d6672616d65776f726b2f6c6963656e7365)](https://github.com/attogram/attogram/blob/master/LICENSE.md)[![Code Climate](https://camo.githubusercontent.com/f17e737c6b3889b421609fb3b9b62ebfe2305ffa7b3d15f02f27d1e0e34235b0/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f6174746f6772616d2f6174746f6772616d2f6261646765732f6770612e737667)](https://codeclimate.com/github/attogram/attogram)[![Issue Count](https://camo.githubusercontent.com/29d80834f5485fe0964feb743287c03cd899ed97ab1d7f1282a4b0ff75bddaf9/68747470733a2f2f636f6465636c696d6174652e636f6d2f6769746875622f6174746f6772616d2f6174746f6772616d2f6261646765732f69737375655f636f756e742e737667)](https://codeclimate.com/github/attogram/attogram)[![Codacy Badge](https://camo.githubusercontent.com/3b55aea5d7dbec05f82f0f38e0bda051da1b2c5f9d54f9d391028a679c16e638/68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f3061353033343462323238663436633938666662303662373862393963626530)](https://www.codacy.com/app/attogram-project/attogram?utm_source=github.com&utm_medium=referral&utm_content=attogram/attogram&utm_campaign=Badge_Grade)[`[CHANGELOG]`](https://github.com/attogram/attogram/blob/master/CHANGELOG.md)[`[TODO]`](https://github.com/attogram/attogram/blob/master/TODO.md)

The [Attogram Framework](https://github.com/attogram/attogram)provides developers a PHP skeleton starter site with a content module system, file-based URL routing, IP-protected backend, Markdown parser, jQuery and Bootstrap.

[Core modules](https://github.com/attogram/attogram/blob/master/modules/README.md)available to add a [SQLite database](https://github.com/attogram/attogram-database)with web admin, [user system](https://github.com/attogram/attogram-user), and more.

After that, Attogram tries to stay out of your way while you do your thing!

More Info
---------

[](#more-info)

- Attogram Framework @ GitHub:
- Attogram Framework @ Packagist:
- Attogram Framework @ Travis CI:
- Attogram Framework vendor package @ GitHub: [(download ZIP)](https://github.com/attogram/attogram-vendor/archive/master.zip)

Requirements
------------

[](#requirements)

- PHP 5.3.3 or higher, or PHP7
- PHP installed with SQLite PDO driver
- Apache 2.2.16 or higher, with setting: AllowOveride all

Setup: Install
--------------

[](#setup-install)

- Get Attogram:

    - use Composer: `composer create-project attogram/attogram-framework your-install-directory`
    - or manually install:

        - Download latest code from GitHub: [`https://github.com/attogram/attogram/archive/master.zip`](https://github.com/attogram/attogram/archive/master.zip)
        - If composer is not available, also download the vendor distribution from [`https://github.com/attogram/attogram-vendor/archive/master.zip`](https://github.com/attogram/attogram-vendor/archive/master.zip)and move the `./vendor/` directory to the top level of your install directory.
- Setup your web server to use the `./public/` directory as the web site root.
- edit `./public/.htaccess`, set **FallbackResource**, **ErrorDocument 403**and **ErrorDocument 404** to the full web path to the index.php file in the install directory.
- (optional) copy `./public/config.sample.php` to `./public/config.php` and edit to change default settings .

Setup: Admin
------------

[](#setup-admin)

- admin pages are IP protected
- change the allowed admin IPs by setting `$config['admins']` in `./public/config.php`
- default admin IPs is localhost in ip4 and ip6: `array( '127.0.0.1', '::1' )`
- admin page requests from non-admin IPs will result in a 404 Page Not Found error

Attogram now has modules! Updated docs coming soon
--------------------------------------------------

[](#attogram-now-has-modules--updated-docs-coming-soon)

OLD DOCS
--------

[](#old-docs)

Setup: Database
---------------

[](#setup-database)

- Install the Attogram Database Module
- Make sure the database file `./db/global` is writeable by the web server
- Tables are lazily created when needed.
- To create all tables at once, goto the [**db-tables admin page**](../db-tables/) and click **Create Attogram Tables**
- phpLiteAdmin is available for database administration, goto the [**db-admin admin page**](../db-admin/), default password is **attogram**

Setup: Users
------------

[](#setup-users)

- load the homepage, goto admin action [**users**](../users/), click **Create New User**
- enter username, password, etc. and click **Insert**
- load the homepage, click [**login**](../login), login as the new user

Attogram Modules
----------------

[](#attogram-modules)

- Easily create modules to extend Attogram!
- Each module lives in its own subdirectory within the Attogram `./modules/` directory.

### Module Structure

[](#module-structure)

- Modules may have the following subdirectories:

    - `actions/` - The Public Actions (.php or .md markdown files) If present, the `home` action is used as the home page.
    - `admin_actions/` - The backend admin-only Actions (.php or .md markdown files)
    - `configs/`- Configurations via `namespace Attogram; global $config; $config['configname'] = ...`, loaded at startup (.php files only)
    - `includes/` - Included files, loaded at startup (.php files only)
    - `tables/` - Database table definitions. Tables are created lazily as needed (.sql files only)
    - `templates/` - Templates, to override default Attogram templates (.php files only)
    - `public/` - Files for public consumption. Served via requests to the `web/` virtual web directory
- Modules are loaded in *directory list order*.

    - Actions and files *cascade*: a duplicate action name or file will overwrite any previous modules action or file of the same name.

### Core Modules

[](#core-modules)

- Attogram Module Manager -
- Attogram Database -
- Attogram User -
- Attogram Info -
- Attogram Contact Form -

Create a page
-------------

[](#create-a-page)

- create a new **PHP** or **Markdown** file in the `./actions/` directory, add anything you want!
- The filename is used as the page URL. ./actions/**example**.php = example.com/**example**/

PHP pages
---------

[](#php-pages)

- PHP filenames must end in `.php`
- The Attogram object is available via the `$this` variable
- Helpful functions:

    - $this-&gt;pageHeader($title)
    - $this-&gt;pageFooter()
    - $this-&gt;log-&gt;debug(), -&gt;error(), etc.
    - $this-&gt;getSiteUrl()
    - $this-&gt;error404($error\_message)
    - $this-&gt;isAdmin()
    - $this-&gt;isLoggedIn()
- Depth settings in `./public/config.php`

    - `$config['depth']['insert-action-name-here']`
- End Slash settings in `./public/config.php`

    - `$config['noEndSlash'][] = 'insert-action-name-here'`

Markdown pages
--------------

[](#markdown-pages)

- Markdown filenames must end in `.md`
- The first line of the Markdown file is used as the page title

Remove a page
-------------

[](#remove-a-page)

- delete the pages corresponding file from the `./actions/` directory

Admin pages
-----------

[](#admin-pages)

- create/delete the same as normal pages, but in the `./admin_actions/` directory

Database tables
---------------

[](#database-tables)

- To add a table, add a file into `./tables/` directory
- The filename must be the name of the table
- File content is the sql `CREATE TABLE ...` statement
- tables are automatically created upon first use

Web discovery
-------------

[](#web-discovery)

- If [`./robots.txt`](../robots.txt) does not exist, Attogram dynamically serves it, with a link to the Sitemap
- If [`./sitemap.xml`](../sitemap.xml) does not exist, Attogram dynamically serves it, with a listing of all public pages

Admin URL overrides
-------------------

[](#admin-url-overrides)

- admins may use URL/[`?noadmin`](?noadmin) on any page to turn off admin access
- admins may use URL/[`?debug`](?debug) on any page to turn on debugging

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

30

Last Release

3629d ago

PHP version history (2 changes)v0.5.1PHP &gt;=5.5.9 || ^7.0

v0.5.6PHP &gt;=5.3.3 || ^7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/6d9bd73aa2ddae66abc8ba1f32e093fc66e7b7b7fa4f35d6b0ec087cdd341fa3?d=identicon)[attogram](/maintainers/attogram)

---

Top Contributors

[![attogram](https://avatars.githubusercontent.com/u/8653063?v=4)](https://github.com/attogram "attogram (948 commits)")[![jtenberg](https://avatars.githubusercontent.com/u/2250867?v=4)](https://github.com/jtenberg "jtenberg (4 commits)")

---

Tags

phpframeworksqliteattogrammarkdownjquerybootstrapSkeletonstarterapacheattogram framework

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/attogram-attogram-framework/health.svg)

```
[![Health](https://phpackages.com/badges/attogram-attogram-framework/health.svg)](https://phpackages.com/packages/attogram-attogram-framework)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M19.6k](/packages/laravel-framework)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

85036.3k](/packages/flow-php-flow)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k13](/packages/tempest-framework)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M545](/packages/shopware-core)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.6k38.2k](/packages/matomo-matomo)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
