ZenTracker is the first next-gen BitTorrent tracker using Symfony PHP framework.
Symfony is a powerful framework (like Zend) that provides tools and coding standards to
produce codelines quickly and easy to maintain in the future. It's an important pro because it allows a better development of large applications like a tracker. Let me show you some aspects of
4 months of work !
1. Security and developer-friendly
ZenTracker works with an abstraction layer and an ORM. That's mean there is
no SQL request in files (and no SQL injection) !
Everything works around objects and the application is completly independant of the database.
So you can use Oracle, MS SQL Server, or even SQLite ! It's
very easy to fetch information and navigate into it.
Symfony is also handling forms and it
brings CRSF protection natively.
3 lines are required to test and record information submitted from a form (calling, binding and recoding).
Example : i want to fetch the image of a category of a torrent posted by a member
PHP Code:
$img = $member->getTorrent->getCat->getImage();
See how
easily you can navigate in database
without knowing the database structure. The ORM will generate SQL request for you in background automaticly.
You don't need to test and secure input variables, Symfony does it already for you ! You can direcly use them ! You'll save lines, have a clearer code and develop very quickly !
Exemple : i want to record a new torrent file
PHP Code:
$this->form = new TorrentForm(); // calling the form
$this->form->bind($r->getParameter("torrent")); // binding POST variables with database fields
$this->form->save(); // record the file (saves torrent in uploads dir and records fields in DB)
With this exemple, Symfony generate the form
alone. It handles file upload and validation (mime-type), etc.
2. Performances
With others trackers, PHP reads each time the config files ! With ZenTracker, PHP will read it
only once and bring it in
cache forever. The first call is very slow (ZT have to generate caches), but when the platform is under heavy traffic, it handles it like a charm !
The caching system is
very flexible : you can cache the entiere page or just a part from a template. By default, the ratio number is calculated in real time in the announce, but in views, the ratio is coming from cache, for every member. So it's very powerful and
easy to configure.
PS : don't forget to purge cache (with command ./symfony cc) each time you change a config file to make changes effective.
3. The best look & feel !
ZenTracker uses the best of CSS3, jQuery, Ajax and HTML to provide to final users the
best browsing experience (with large screens, eg 16/10). Even on iPad and other tablets, it's a complete new experience that you've to try quickly. There's no words to describe the feeling of it. The application is build around a large shoutbox, the gravity center of the community and placed on the homepage. If your community is very large, you'll appreciate the benefit of
notifications.
4. Mobile support
ZenTracker is the first world-wide to support mobile browsers and to share it in the source code ! Using CSS3 Media-Queries, there isn't any special files, everything is included and mobiles are sharing the same code with desktop computers. With a mobile detection, some JS will remove useless functions in order to preserve battery life.
That's a few things about ZenTracker.
Browsing the code :
https://sourceforge.net/p/zentracker/code