Starting new data management project - some thoughs appreciated

Hello Yii community,

I am new in here but certainly will last to Yii for long from what I have seen now :)

I am starting to create an application which is designed to manage data for companies selling mainly outdoor day trips (e.g. hikes, rafting etc). The application at the moment is a project purely for myself to get back into IT, as I studied computer science and did quite some PHP programming but stopped 8 years ago and joined the outdoor tour guiding business.

So now I want to get back into web programming using modern technologies like REST/AJAX and a modern framework which saves me a lot of work - that’s how I found Yii :)

Ok, so my project is building a data management website for outdoor tours. This means:

  • The application is a backend application only (some frontend for guides and partners could be provided later)

  • The views will show a lot forms to rapidly change the data

  • Any page will be accessible only to logged in admins

The 4 main data parts in my model at the moment are:

  • the tours

  • guides to guide the tours

  • groups in which people book the tours

  • guests belonging to these groups

Later on, online booking could be integrated, so that a code snippet is integrated into an existing website.

To give you an idea of what the application should do, I made uploaded 4 screen designs that show how the main data types could be managed. Please don’t look at the HTML/CSS code, its ugly, only meant to show the functionality.

As you can see, lots of forms.

There is quite some of m:n relations in there:

  • A Tour can have several groups, a group can belong to several tours

  • A group can have several guests, a guest can belong to several groups

  • A guide can have several tours, a tour can have serveral guides

Also, filtering/searching the lists, especially the tour list. In a real live company with around 700 tours a year and 5000 guests a year, this function is needed.

I hope you understand what this application is about. And I have some questions of course :)

  1. Do you think Yii is the best solution for this? Or can you think of an easier/quicker way to achieve this functionality?

A friend of mine suggested to have a look into Drupal, too. He said creating and managing data in there is very easy, too.

  1. There surely is some functionality I want already available in Yii and its modules. Some things I am particularly curious about:
  • managing the m:n relations

  • updating the data on the server the "modern" way (REST/AJAX)

  • updating the data viewed on the page after changing it without reloading the page (using REST/AJAX)

  1. I already started building a MYSQL database model based on the screen designs. I read the following article:

[not allowed to post links yet]/wiki/227/guidelines-for-good-schema-design/

It is for version 1.1. Same principles in version 2?

I would really appreciate if you could provide some thoughts, reccources I should read etc. I really want to do things the Yii way to learn how to use this framework correctly and thus use its benefits.

Best regards

Philipp

Hi Philip,

I certainly think yii is a good choice for your use case, your numbers "700 tours a year and 5000 guests" are pretty small even drupal,wordpress etc will have no problem at all handling this, but you will hit performance bottle neck with these system lot sooner than yii, since they have lot more bells and whistles. yii on other hand gives you almost everything these system offer and lot more flexibility you pick and choose to put your system together yourself.

We have stories where users converted their drupal sites to yii in mater of days, check under "Yii Powered Applications" on the forums.

Read the guides and in particular read up on Gii, its a tool which will get you going in no time.

Yii does have built in query builder as well an ORM which allows you to model your relationships easily.

Yii does have very good support for restful apis, you can format your data in json,xml or custom format entirely up to you how you use it.

along with api’s you probably going to need a client-side framework which allows you to consume the api’s and render your UI.

Same principles indeed hold for yii or any framework for that mater.

hope this helps

alrazi

Hi alrazi,

thanks for your detailed reply. I started the project in Yii and will surely have more questions as I really want to learn how to use this framework properly. I could think of writing a kind of journal as I progress with my tasks to help others who have similar goals.

Best regards

Philipp

Sounds good, you can always post here on the forums I am sure someone will answer questions you might have. please do share what you build would be really nice read.