AppFactory - Delphi for Android 2013 contest review

Posted by on in Blogs
Hi All, let’s start reviewing projects, submitted for “Russian Delphi for Android 2013 contest”. Primarily I thought of review format as “Delphi XE5 can do it”. Then I was so impressed by the technical fantasy and creative implementation, so I re-formatted the style to “You can do it with Delphi XE5”. You won’t be disappointed.

Contest prizewinner – Pavel Litvinko, here’s his photo at Embarcadero RAD Studio XE5 tour seminar in Minsk.

In the second part of this post you’ll find an interview with Pavel, but professionals are more comprehensibly described by their projects. I mean, let’s first look at his application. Two applications. The whole solution!

Project "AppFactory" (pictures're ready)

Pavel submited not only the project, but a very good video with pretty music and dynamic action (leave IDE manipulation screen casts for evangelists).

The solution can be used to create mobile applications without programming.

The solution includes 2 mobile applications. The first is AppFactory, and you can create "an application template", "a prototype", "design-time-model", "configuration". This "application template" with "content-loading directives" then is saved in external xml-file. The second application, AppProducts, loads the "application template" and dynamically ad-hoc generates fully-functional mobile domain-specific solution.

Do you still miss the idea? Think of CMS. Or dynamic GUI generation from saved configuration (I know you did this many times). Think even of Delphi itself with "Object Inspector" and dmf/fms. Run AppFactory and use it as visual designer in IDE, sitting widgets on the mobile form, designing GUI. Just the same as designing reports (in FastReport, for example). The same visual routines are used to bind the widgets and "content" to be loaded in runtime.

Upon comletion of "application template" and session with AppFactory, we run AppProducts application. It loads the saved "configuration" and run it (like FlashPlayer runs flash-files). The results are great while the application is "native", even generated dynamically!


I can't say the idea of the project is absolutely fresh-new. But the productivity of the author is outstanding. Pavel created just "design-time IDE". The programming skills are high-level (one of the parameter for the contest jury when valueing the competitors). AppFactory looks like mini-Delphi for Android. For young developer such a project is a good case in his portfolio. Much better, than "easy to learn". Pavel not only became a prizewinner, but made a good investment in his future. He can easily find a client for a commercial project (made even from scratch or with AppFactory).


Pavel won a license for Delphi XE5, so his project will appear on GooglePlay soon.

I asked Pavel once again to demonstrate the power of his solution ("blind-test"). I set him a taks like building a mobile application "hotel for refugee/abandoned pets". Of course, such organizations don't have money to order a brand-new solution, while simple-easy application is a good option.

I'm now testing the "no-programming applicsion", and will publish, when ready.

Pavel's made "mobile IDE with visual designer", and another contestant, Alexander Sakharov, submitted the project "Pascal interpreter for Android". So together the projects create a good synergy. The review of "Pascal for Android" will also come soon.

Interview with the author (he does know everything about AppFactory)

1. Pavel, where do you study/work?

I'm a 2-year student at Belarus State University of Informatics and Electronics. I will be a programmer.

2. You are a programmer already! How have you learned programming?

I entered the University after winning XIX-th International Conference of Young Scientists, Netherlands, 2012. I made my first "Hellow, World" when I was 11-12. I learned on my own, and now I'm 3-4 years ahead of the University syllabus. Of course, in programming, not in math. My classmates haven't started learning Object Oriented Programming yet.

3. What languages do you know?

Delphi, C, C++, HTML

4. You've done quite a complicated (for students at least) solution. It means you're rather professional. Don't you think Delphi is out-of-fashion for young developers or too simple technology for professionals?

Of course, not! Delphi is my favorite tool I use for my project. Delphi is not simple, it just doesn't make me be too concentrated on language features, rather than idea or implementation. At the same time I can do very complicated stuff with Delphi. With XE4 and XE5 and Android/iOS support Delphi is on the top verge of technological fashion, however people are surprised about this. For example, my professors and students were rather exited, when they saw my mobile Android application built in Delphi!

5. Where did you pick up the idea?

I don't remember some project I could call "a prototype". Now my solution can be compared with something else, but really it was "pure intention". As I'm a bold geek, I want to program anywhere and anytime. During brakes in my University I could program on tablet or smartphone. I looked around and didn't find something what I needed. I decided to do it myself. Of course, full-scale compiler is a very big challenge for me (however I'm thinking of this), while an interactive designer happened to be quite doable for the period of contest.

After initial pilot I got an idea, that this solution would be ok not only for programmers, but also for non-programmers. The result could be not only "an app", but "interactive presentation". People can create a content as such kind of app (made with AppFactory) and then share with each other. This is a final goal of the project.

6. I've written about the functionality above as "a user". Please, do this again as "a developer".

The solution includes 2 applications:

  • AppFactory - application to design/construct "configured applications";

  • AppProducts - application to run ready "configured applications".

The designer in AppFactory is made in such a way, that allows splitting a application into "design" part and "content" part. The design is built up from "widgets", the "content" is loaded into them at runtime.

Every widget is an adjustable module with some predefined functionality. The user simply adds necessary to the design and then sets their properties.

Widgets are the main part of any application, made with AppFactory. One can set how they are displayed and how navigation goes through them: list or tabs. In this simple way the functional menu is constructed.

One makes the general view of the application using the controls, similar to VCL/FMX in Delphi: labels, images, panels etc. Their properties are also set in AppFactory. A ready application can be run on mobile using AppProducts.

Ideally I'd like produce a ready apk right on mobile device. So now one needs AppProducts at the moment to run an application. And I'm thinking of exporting the configuration to Delphi code for independent compilation.

The built-up "configured-application" can be shared among mobile users, if their devices have AppProducts installed. So compilation is not critical for my project, and moreover, users can share and exchange their "configured-apps" with interactive content.


Check out more tips and tricks in this development video: