View Single Post
  #1  
Old 15th September 2011, 18:58
Optix's Avatar
Optix Optix is offline
Senior Member
 
Join Date: Sep 2011
France
Posts: 145
Lightbulb Introducting ZenTracker: the future of BT trackers
ZenTracker is the first next-gen BitTorrent tracker using Symfony PHP framework.

Click the image to open in full size. Click the image to open in full size.



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.

Click the image to open in full size.

That's a few things about ZenTracker.

Browsing the code :
https://sourceforge.net/p/zentracker/code

Last edited by Optix; 28th January 2012 at 17:21.
Reply With Quote
The Following User Says Thank You to Optix For This Useful Post:
Fynnon (23rd September 2011)