ATK / Achievo Update

I’ve committed to the Yii framework now for building Maestro (check Maestro posts for more information). I’m not following the rss feed from the Achievo forum anymore, and I’ve removed (sigh…) the Achievo/ATK menu from my website so as to not mislead anyone as to my involvement. However, Achievo’s features and simple user and administrator interface are still unrivaled in an open source app of its type, and Maestro will be strongly influenced by Achievo.

In case the information is still of benefit to anyone, here’s the content from the static Achievo/ATK menu page.

– dale

Achievo / ATK

Achievo is a web-based Business Support Services (BSS) application for organizations, built using the ATK Framework and licensed under the GPL. Achievo was originally developed by iBuildings, but is transitioning to community leadership. Achievo includes a rich set of core modules, including support for employees, projects (phases and activities), timesheets, organizations, contacts, CRM (customers, campaings and contracts), and document management. There are a wide variety of Add-on modules available for additional functionality, and you can add or develop Custom modules for more more specific requirements. Achievo is stable and suitable for production.

The ATK framework is a special purpose PHP framework targeted at business applications. It allows database-type applications to be build quickly and with very small amounts of code. Its focus on business features makes it an excellent framework for HRM, CRM, data management and CMS type applications. The ATK framework was originaly developed by iBuildings, but is transitioning to community leadership. The ATK Framework is stable and suitable for production.

Adapto is a new project led by Ivo Jansch, who conceived Achievo and the ATK framework, to re-implement the concepts proven in the ATK framework to the next level, concentrating on easy to use CRUD functionality for relational databases and other data sources with only a few lines of code, and using the Zend Framework (v2) for caching, view rendering, database connectivity, etc..

 

Running TrackStar on Windows/XAMPP and FreeBSD

I’m learning Yii and worked through getting TrackStar (from Web Application Development with Yii and PHP) running locally on Windows/XAMPP, and then on FreeBSD. The trickiest part was getting the trackstar/.htaccess file to correctly hide index.php.

I have also been experimenting with cbdb (Comic Book DataBase) from Yii Rapid Application Development Hotshot), and next will be exploring CMS (Content Management System) from The Yii Book. I plan to use the best most applicable features of each to bootstrap Maestro development.

I started with a zip download of the full TrackStar app from Jeff Winesett’s trackstar repo on GitHub (using trackstar/ directory in the repo) and a yii-1.1.13 download (instead of using the YiiRoot/ directory in the repo). The code on GitHub includes the book errata (compared to the chapter code in the download bundle). I tested TrackStar locally first using Windows XAMPP 1.8.1 (PHP 5.4.7 and MySQL 5.5.27), then moved it to a FreeBSD server.

1. At first (locally), yiic and phpunit didn’t behave as expected, but it was my fault. I edited trackstar/index.php to use yii-1.1.13, but neglected to also edit trackstar/protected/yiic.php and trackstar/protected/tests/bootstrap.php (and for completeness, trackstar/index-test.php also).

2. I had to change “truncateTABLE” to “delete” in two of the migration scripts in order to “migrate down” (MySQL 5.5+ can’t truncate InnoDB tables with foreign keys).

3. TrackStar now runs, but I can’t login because there are no users in the database. The solution was to manually add “User One” and “User Two” with SQL as per the book.

INSERT INTO tbl_user (email, username, password) VALUES
  ('test1@notanaddress.com','User One', MD5('test1')),
  ('test2@notanaddress.com','User Two', MD5('test2'));

4. Now I can login as either “User One” or “User Two”, but there are errors creating new projects (and there are new projects being added in tbl_project, which could be a bug…). Running “./yiic rbac” fixes the project creation errors. Now I can create projects, issues and comments, assign users to projects, delete projects, etc. TrackStar Rocks!

5. Next, I copied TrackStar from my development workstation to a FreeBSD server (PHP 5.4.10 and MySQL 5.5.30), modified permissions on directories (for reading, and writing to where necessary by Apache), created a trackstar.conf file, restarted apache and created a database. However, in order to connect to the database I had to change the connection string in main.php and console.php from “host=127.0.0.1” to “host=localhost” to get the migration scripts to run and the main trackstar page to load (I also had to change the database username and password in the connection string, but those are secret 😉 ).

6. Now connecting to the database and with the main page loading, navigating using the menu results in a 404 error “The requested URL /usr/local/www/trackstar/index.php was not found on this server.”

The cause of the final problem turned out to be the .htaccess file provided with TrackStar, which  assumes that trackstar is served from the root of the web server (i.e. https://www.dalescott.net/ is TrackStar), when I want “https://www.dalescott.net/trackstar/”. I don’t know why it worked locally on XAMPP with the original .htaccess (but figuring it out is on my ToDo list).

Here is my final Apache trackstar.conf

casper# cat /usr/local/etc/apache22/Includes/trackstar.conf
Alias /trackstar "/usr/local/www/trackstar"

<Directory "/usr/local/www/trackstar">
    Options All
    AllowOverride All
    Order Deny,Allow
    Deny from All
    Allow from All
</Directory>
casper#

and .htaccess

casper# cat /usr/local/www/trackstar/.htaccess
# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
</IfModule>

# Unless an explicit file or directory exists, redirect all request to Yii
# entry script
<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  # de facto std recommendation, but assumes/requires that app is root of webserver
  # RewriteRule . index.php

  # Yii forum post "Problem with .htaccess"
  # www.yiiframework.com/forum/index.php/topic/15694-problem-with-htaccess/
  # (1) RewriteRule ^.*$ /index.php
  # (2) RewriteRule ^.*$ /trackstar/index.php

  # seems to be more formal version of Yii forum post (1)
  # forums.laravel.io/viewtopic.php?id=5504
  # RewriteRule ^(.*)$ /index.php/$1 [L]

  # seems to be more formal version of Yii forum post (2)
  # ellislab.com/forums/membe%20r/140390/viewthread/234295/
  # RewriteRule ^(.*)$ https://www.dalescott.net/trackstar/index.php/$1 [L,QSA]

  RewriteRule ^.*$ /trackstar/index.php
</IfModule>
casper#

Yii PHP framework

I came across the Yii PHP framework and have been doing a deep dive working through a number of Yii tutorials to understand the Yii framework and development model. So far I’m extremely excited, the Yii framework is fully featured and there are loads of third-party modules to handle the edge cases. If all goes well, my plan is to build Maestro using Yii in a greenfield project, instead of an Achievo extension module using the ATK framework.

I bought several books on Yii and am working their tutorials as fast as I can type. So far I can recommend them all.

They have their own unique perspective, development environment, workflow and tool set components, which has been instructive, and Yii 1.1 Application Development Cookbook includes an excellent guide to the Zii component library.

I have also found the community-supported Yii Playground project, which includes functional demos of Zii components with code examples.

And now, back to the books…

Maestro – the SCC Business Support System

I am renaming the Swift Construction Company proof-of-concept business support software application Maestro, after hearing Kohsuke Kawaguchi explain he named his project Jenkins because users would identify with it better if was named like a person, in particular a servent.

Picking up on that theme, Maestro users will say things like:

  • Did you get the bill of materials from Maestro yet?
  • Did you file the CAD drawings with Maestro?
  • Please get a where-used report from Maestro before making any changes.
  • What drawing rev does Maestro say serial number 123 is?