After over a year of work, more than a month of closed testing, Salenauts website finally became publicly available. It’s still a beta, we still working hard and still have plenty of improvements in the plans, but it’s time to show our work to the world and collect feedback from users. 🙂 Service directly derived from Śledź okazje and extending his ideas. Just like on Śledź okazje, we have here indexing offers from stores and displaying them in price comparison, but it is only one of many features of the site.
The major feature of the service is, of course, pricetracker – like on Śledź okazje, we have here a mechanism for indexing the offers from selected stores and recording them in the database, so that you can browse their history and compare offers for the same titles. But here this functionality is much more powerful – because the website is international, we store information about different prices for different regions, and all prices are converted into local currency. Also we get much more informations about offers – we save the type of product (finally, you can filter DLCs), a discount is calculated from the retail price, rather than the previous price in the store. But above all, products are grouped by game title, so you can easily view all offers for the selected title, even if the products have different names in different stores.
Indexers have been completely rewritten, become much more efficient and easier to develop. In fact, it was probably the toughest and most annoying part of the project. Indexers use a store page or a API (if it’s useful), which tend to act in a completely unpredictable way. After dealing with strange limits, restrictions, trash in the HTML and completely unintuitive behaviors, indexers works, but still surprised every day with something new. Big surprise for me was that most problems have caused by the biggest stores like Amazon and Steam – after such giants I expect that their IT will be a model, but it turned out that it is quite the opposite. Amazon’s API is useless, and the website of the store is a nightmare – the code is overloaded with inline scripts and styles, HTML tags are nested in a strange way and sometimes unclosed. In addition, some product pages have a completely different structure of the code, and the list of products gave a strange and incomplete results. Parsing it and extract from this page useful information was a nightmare, I’m really surprised that this store is still working. Steam was better, but not much – their API is slow, there is no convenient way for checking the region locks and other useful functionalities (eg, retrieve a list of packages), and occasionally returns incorrect data. Both store also have limits on number of requests from one IP address, to make indexing even more difficult… Other stores were better, some have very comfortable feeds with a list of all the products, but the duo Amazon and Steam was enough that I hated this part of the project.
Salenauts it is not just a simple aggregator of deals, but also have the database of games that group these offers. The lack of such database and no possibility to find all offers for particular title was probably the biggest flaw of Śledź okazje. Salenauts fix it, and new mechanism gave a lot of new possibilities. Each game has its own card, where you can see basic information about the title, list of offers and statistics. Games have relationships, so you can easily find information about the list of DLCs for the selected game. On game card you can also find a list of news related for current game, as well as information about bundles containing this game. The games themselves can be searched by name, genre, release date, type, and metascore.
Collections and wishlists
Introducing games was done not only because of the need to group products. The main motivator was ability to handle collections and wishlists. Salenauts supports login by a Steam account, which also gives the ability to synchronize collection and wishlist from Steam account with Salenauts (of course there is also the ability to manually manage both lists). After that the games from collection and wishlist are marked on website, and for games on wishlist we can configure notifications about new deals for specified titles, also with the option of sending an email message. Based on the number of occurrences every game in the collections/wishlists we create a simple ranking of popularity, but we already have an idea how to better use it in the future.
News and bundles
Like on Łowcy gier, on Salenauts we also have news, which are meant to inform about the best deals. Editor may assign to the news any number of deals, which will be listed in automatically generated table. In the same way can be assigned discount codes, games and stores – this allows to better organize content and improves filtering. News content uses advanced caching system to improve performance – experience with working with Łowcy gier turned our attention to handle sudden traffic spikes.
Salenauts also have budle database which is quite connected with news. Editor can create a bundle, which have the price caps (tiers), which have assigned games. The mechanism allows mark DRMs, bonus games and, of course, set prices for each tier. Bundle can be assigned to news – after news publication bundle becomes public, and the news has a table with a listing of the bundle content splitted by tiers.
Forum was a big challenge for us. Full integration forum engine with main Salenauts CMS was very important for us, but we could not afford to write own engine from scratch. On the other hand, existing solutions technologically stopped in time some 10 years ago, which makes integration very difficult. Finally we decided to MyBB, which we introduced a number of improvements to allow better integration with the core system. This allowed for handling all requests by the main CMS, which internally run the forum scripts and return the result to the user. Creating an account and logging into forums is handled internally and all mechanisms are hidden from the user. In the future, probably another forum functionality (such as notification, profile settings) will be moved to the core Salenauts system. We also look forward to announced MyBB 2 which should be more modern and thanks to the modular structure considerably more flexible.
Right now forum handle comments for the news, but we plan to extend this mechanism to other parts of the website. Also current solution definitely requires improvements – now user needs to go to forum topic to see comments. We would like to display them directly under the news content, and from there should also be possible to add new comments and reply to other users. Time will tell how problematic this is. 🙂
The site was written in PHP using Yii framework 1.1, the database is MySQL. The layout is based on Twitter Bootstrap, although no much was left of his default settings. As I wrote earlier, as a forum engine we use a modified version of MyBB 1.8. We use the Steam OpenID for authentication and dedicated solution for handling user accounts and synchronize with forum.
Except described solutions the system has many dedicated widgets used in the layout and a very powerful backend for management of all content on the site. Content on the website are customized for the selected user region, and the whole website is quite optimized to ensure high performance and handle spikes of traffic. Plans for further development is a lot, so probably from time to time I will publish updates. 🙂