Welcome Guest, Not a member yet? Register   Sign In
Architecture of a Student Job portal using CodeIgniter
#1

[eluser]Unknown[/eluser]
Folks,

I work at a small vocational university wherein my job is mainly text processing, and writing scripts in Perl/MySQL here and there.

Now the university is planning on implementing an in-house web-based portal which will carry complete student profiles (names, address, marksheets, overall performance during their 2 or 3-yr coursework etc). These profiles will then be made visible to prospective employers (ofcourse with the students permission).

Now I have been assigned this project. I have to comeup with its architecture, budget effort, tools etc. I have never architected an complete web-application before .. but I really wanna nail this as it will be a big step-up for me in my career.

I understand this is a portal similar to match.com or careerbuilder.com. There will be companies logging on on one side and there will be student profiles on the other. These both need to connect.

This is a pilot project and if it goes successful they plan on including other vocational university students. Hence I believe this also needs to be little bit scalable.

So far I have considered using PHP/MySQl and read about few of the frameworks. How doable is this with CodeIgniter ? How do i decided on classes / obejcts etc ?
Are there solutions already out there which i can use and tweak around a little ?

Looking for budget-friendly architecture/framework advice that will help me develop this project in minimum time.

Thank you
#2

[eluser]boltsabre[/eluser]
Well.. what's your knowledge of PHP and OOP like? If good, you'll be able to pick up MVC / CI pretty quickly.

However, I'm a bit worried... you're talking about making some pretty private data available to the public (ie, student names, address, marksheets, overall performance during their 2 or 3-yr coursework). Name and address are particularly worrying. You're going to need some very good security and verification features, uni's are a prime target for hackers looking to steal lists of personal data.

>> How doable is this with CodeIgniter ?
Very. That is the whole concept behind CI, to build applications in a RAPID / AGILE like SDLC (system/software development life cycle).

>> Are there solutions already out there which i can use and tweak around a little ?
Not that I am aware of, however there are libraries out there to help you implement basic modules of (grouped) functionality, like Authorisation/Register/Login/Logout.

>> ... that will help me develop this project in minimum time.
That's could be the bane of your problem. With little/no CI or full project development experience, you've picked a pretty big hill to climb for your first attempt. See below:

>> How do i decided on classes / obejcts etc ?
Well, that all depends on your Use Cases (do you have any experience / exposure to UML or planning software/website projects?). The better you can plan this out, the better you'll know what classes you'll need. For example, you'll have to consider things like this:

Student Portal.
- They will need a Register page?
- Login Page?
- Logout functionality
- View my account page?
- Update my account page?
- Delete my account page?

Sounds simple, but lets look at the Delete option.
- Are you really just going to let someone click one link to delete their account? Anyone walking away from the computer for 30 seconds can have someone else completely delete their account with a click of a mouse.
- So, you should implement a "please enter your user name and password to delete your account" functionality.
- But then you have to build that extra form, put in validation, hacking prevention, etc. Then you have to check if the user name exists, and password match, etc.
- Then finally once a user has "deleted" their account, what do you do? Do you really delete the entire row in the DB like it never existed (now you have no historical data), do you flag it somehow (perhaps a column called "deleted", default 0 for live accounts, set to 1 for deleted accounts). If you do that then you have the worry that if the db gets hacked, everyones details are still there, so perhaps you may want to remove that deleted row into an "archive" DB?

Then you have the whole "Register/Login" process, including:
- Register account (will you do a 2 step verification process where you send them an email with a link to click to really activate the account).
- How do you really know that they are a student? Are do you have an Admin team who puts students in? In which can you'll have to have an Admin backend (which you'll want anyway). Or if not, then you need some way of tying into the existing Uni DB's so that you can verify that the student id submitted exists, etc.
- What about "lost passwords" and "reset passwords"...
Luckily there are some pretty good existing authorisation libraries out there that have most of this built in, but you'll still need to plan out all the Use Cases so that you know what you want to achieve.

Then you have studends marks... who put them in? Admin. Great. Things to consider:
- Do you need various levels of Admin? ie, normal Admin, Super Admin (where Super Admin can create/delete new Admin profiles for new staff or leaving staff.... if not then one admin could just delete another admin).
- What can each level of Admin do...???

Do you have "Clients" on campus who want reporting ability? If so, what kind of reporting? You'll also have to have a process for handling their login/logout processes... could be as simple as just have a "user_type" column in your user table... ah, but wait.. you have students, you have companies, you had admins, and maybe uni clients... where do you store them all? All in the same master "user" table, or in separate tables... now it's starting to get confusing... who creates "uni clients"... do admins? or Super admins? Who can delete "uni clients"? Themselves, or must they request if from Admin? If it's a request, then you have to implement a "contact" mechanism... argghhhh.....

Okay, that's just the tip of the iceburg of things you'll have to consider. The idea of that above rant is that you've picked a fairly large project to start with. I would consider it likely that you'd want to spend at least 3 weeks minimum, working full time, simply on your planning, before you even write a line of code. You'll have to work out the flows of your project as much as possible, otherwise you'll end up with a buggy application, full of security holes and crashes, and stuff, and your "big step-up for me in my career" will turn into a "big better not mention that project in my career" kind of result

But yes, in a nutshell, CI could/would be a suitable framework for this kind of application.




Theme © iAndrew 2016 - Forum software by © MyBB