Often i am posed with a question: “Hey! Do you know how can we build an expert website like Odesk or Freelancer in a framework such as Ruby On Rails”. As you all know, the answer is not straightforward. As with every business, you need to have a certain defined set of requirements, your targeted audience, business model and million other factors.
However, i have seen that there is a certain architecture (as for building an MVP) that can be used to start such websites. In the post below, I will list down some useful gems and application components that are must for building such web business. Undoubtedly, ROR provides one with a lot of flexibility in terms of integrating with different available open source gems for UI (Twitter bootstrap/foundation etc) to Billing APIs (Paypal/Stripe etc), Social Media (twitter/facebook/linkedin integration) and use them optimally with your application.
The developer/architects need to make sure that they are using the complete abilities of the framework. Here are some useful gems libraries that can be used:-
1. User Authentication Layer (Devise)
2. User Profile Management (Types of users that you have: experts/clients/admins)
4. Admin Management ( CRUD management on User profiles/Questions/Payments/ Arbitration/Reviews/Ratings/Comments. ActiveAdmin can be used over here but to have better flexibility and control on different parts, this should be built with a keeping in mind a lot of security control features)
5. Reviews (Expert profile reviews and rankings)
6. Search Facility (Both on questions and expert profiles using full text search engine such as ElasticSearch )
7. Categorization of Problems/Tasks and Experts according to their subjects.
8. Internal Messaging (between clients and experts)
9. In order to make it better a real-time chat service can also be implemented with audio+video capability. TokBox is a viable solution)
10. Defining project (milestones/goals reviews/ advance payments + recurring payments)
11. Job/Project Board. (It also includes a bidding on project)
12. Awarding a project (payment escrow etc)
13. Calendar +Schedule Management
14. Some basic project management tasks (ideally Agile). Use a PM tool such as JIRA)
16. Hosting (Heroku, a cloud based service ideally suited for ROR applications)
These are some of the gems that can be used to build a website like this. However, as a developer, we need to make sure that when using ROR (or the team use) they know inside/out of the framework and they follow the best practice e.g DRY principles, KEEP, low coupling and highly cohesive models and dont use ROR just like any other framework.
Ideally the application should be written with a lot of automated test coverage using Cucumber/RSpec (If you are not building up an MVP). Also while starting up, you will want to find out the most important functionality of your application and then prioritize tasks to deliver them as per decided timelines and goals (depending upon your resources).
Once that is done, you will be adding value added features to your application that will include:-
1. Cross Platform Development (web/mobile apps/tablets)
2. Testing skill-sets of experts using different online tests and so many more, depending upon the focus.
If you have any questions or concerns feel free to contact us or leave your feedback in the comments below.