Ezpoisk (ez - easy, poisk - search (from Russian "поиск")) is an online platform for Russian-speaking people in the US. Here they can find help within Russian community, look for related information, submit public listings, look for the representatives of various services who is available in their native language. They can share news and provide useful information to other members of community.
One of the reasons I wanted to build this application is a chance to work with various parts of the stack. Here's a short summary:
-
User authentication is done with Devise
-
Paperclip is used for image uploading. Paperclip-optimizer and Image_optim are used to optimize images, S3 for storage.
-
Pgwslider and TouchTouch were used to display images nicely on desktop, as well as mobile devices.
-
Question searching is implemented using AJAX. I’ve also provided custom middleware to improve response time. User can also save or hide listings, this is also done via AJAX for better UX.
-
Sidekiq is used for background jobs.
- Mailing users
- Importing news
- Geolocation
- Data aggregation
- Sitemap generation and uploading
- And a few more
are all done in background.
-
OmniAuth was added for better UX
-
News posts are created by parsing 3rd party’s RSS feed, using Nokogiri
-
Users can post banner ads. Payments are accepted via Stripe. I used stripe-rails
-
Rails Admin was used to provide administration panel.
-
Geolocation is done with Geokit. User can search for listings by state and city or by distance from specific place. GMap is used to show location on map.
-
Bootstrap (sass) to create responsive layouts.
-
Web hooks are used to notify team via slack of important activity on site.slack-notifier -
Analytics is done with Google developer tools. We used Analytics and Console to improve SEO.
-
Various gems were used to improve code quality and security. Gemfile
-
Application runs on Heroku using Puma web-server, with Amazon CloudFront CDN for assets.
-
Application is heavily tested using Rspec
- module includes
- module settings
- belongs_to
- has_many
- validations
- callbacks
- scope
- instance methods
git clone https://github.com/AndreiMotinga/ezpoisk.git
cd ezpoisk
bundle install
create config/application.yml
and provide your keys,
otherwise various parts of app will fail
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
S3_BUCKET_NAME:
FACEBOOK_APP_ID:
FACEBOOK_APP_SECRET:
VK_APP_ID:
VK_SECRET_KEY:
GOOGLE_CLIENT_ID:
GOOGLE_SECRET_KEY:
GOOGLE_MAPS_API_KEY:
SLACK_URL: ""
STRIPE_PUBLISHABLE_KEY:
STRIPE_SECRET_KEY:
spring rake db:create
spring rake db:schema:load
spring rake db:seed_states_and_cities