initial dundo.farm

main
Steve Ayerhart 2022-02-21 23:00:50 -05:00
commit db46955f85
No known key found for this signature in database
GPG Key ID: 5C815FDF3A00B8BA
39 changed files with 1324 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/.sass-cache/
/ig_media.db

25
DundoFarms.rb Normal file
View File

@ -0,0 +1,25 @@
require 'rubygems'
require 'bundler/setup'
require 'compass'
require 'sinatra'
require 'sinatra/activerecord'
require 'sinatra/reloader' if development?
set :database, {adapter: 'sqlite3', database: 'ig_media.db'}
set :pages, [ 'about', 'critters', 'gallery', 'merch' ]
get '/' do
erb :index
end
get '/gallery' do
@media = IGMedia.order('timestamp DESC')
erb :gallery
end
get '/critters' do
erb :critters
end
require './models'

16
Gemfile Normal file
View File

@ -0,0 +1,16 @@
source 'https://rubygems.org'
gem 'sinatra'
gem 'sinatra-activerecord'
gem 'sinatra-contrib'
gem 'rake'
gem 'thin'
gem 'shotgun'
gem 'sqlite3'
gem 'sassc'
gem 'compass'
gem 'whenever'
gem 'instagram_basic_display_api'

101
Gemfile.lock Normal file
View File

@ -0,0 +1,101 @@
GEM
remote: https://rubygems.org/
specs:
activemodel (7.0.2.2)
activesupport (= 7.0.2.2)
activerecord (7.0.2.2)
activemodel (= 7.0.2.2)
activesupport (= 7.0.2.2)
activesupport (7.0.2.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
chronic (0.10.2)
chunky_png (1.4.0)
compass (1.0.3)
chunky_png (~> 1.2)
compass-core (~> 1.0.2)
compass-import-once (~> 1.0.5)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
sass (>= 3.3.13, < 3.5)
compass-core (1.0.3)
multi_json (~> 1.0)
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
concurrent-ruby (1.1.9)
daemons (1.4.1)
eventmachine (1.2.7)
faraday (0.17.4)
multipart-post (>= 1.2, < 3)
faraday_middleware (0.14.0)
faraday (>= 0.7.4, < 1.0)
ffi (1.15.5)
i18n (1.10.0)
concurrent-ruby (~> 1.0)
instagram_basic_display_api (0.0.2)
faraday (~> 0.17.3)
faraday_middleware (~> 0.14.0)
minitest (5.15.0)
multi_json (1.15.0)
multipart-post (2.1.1)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
rack (2.2.3)
rack-protection (2.2.0)
rack
rake (13.0.6)
rb-fsevent (0.11.1)
rb-inotify (0.10.1)
ffi (~> 1.0)
ruby2_keywords (0.0.5)
sass (3.4.25)
sassc (2.4.0)
ffi (~> 1.9)
shotgun (0.9.2)
rack (>= 1.0)
sinatra (2.2.0)
mustermann (~> 1.0)
rack (~> 2.2)
rack-protection (= 2.2.0)
tilt (~> 2.0)
sinatra-activerecord (2.0.25)
activerecord (>= 4.1)
sinatra (>= 1.0)
sinatra-contrib (2.2.0)
multi_json
mustermann (~> 1.0)
rack-protection (= 2.2.0)
sinatra (= 2.2.0)
tilt (~> 2.0)
sqlite3 (1.4.2)
thin (1.8.1)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
tilt (2.0.10)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
whenever (1.0.0)
chronic (>= 0.6.3)
PLATFORMS
x86_64-linux
DEPENDENCIES
compass
instagram_basic_display_api
rake
sassc
shotgun
sinatra
sinatra-activerecord
sinatra-contrib
sqlite3
thin
whenever
BUNDLED WITH
2.3.7

0
InstagramPosts.rb Normal file
View File

16
Rakefile Normal file
View File

@ -0,0 +1,16 @@
require 'rubygems'
require 'bundler'
require 'rake'
require 'sinatra/activerecord/rake'
require 'instagram_basic_display_api'
Bundler.setup
namespace :db do
task :load_config do
require './DundoFarms'
end
end
Dir['tasks/*.rake'].sort.each { |ext| load ext }

15
config.rb Normal file
View File

@ -0,0 +1,15 @@
require './DundoFarms'
project_path = Sinatra::Application.root
http_path = '/'
http_stylesheets_path = '/style'
http_images_path = '/images'
css_dir = File.join 'public', 'style'
sass_dir = File.join 'style'
preferred_syntax = :scss
relative_assets = false
output_style = :expanded

6
config.ru Normal file
View File

@ -0,0 +1,6 @@
require 'rubygems'
require 'sinatra'
require './DundoFarms'
run Sinatra::Application

24
config/schedule.rb Normal file
View File

@ -0,0 +1,24 @@
# Use this file to easily define all of your cron jobs.
#
# It's helpful, but not entirely necessary to understand cron before proceeding.
# http://en.wikipedia.org/wiki/Cron
# Example:
#
# set :output, "/path/to/my/cron_log.log"
#
# every 2.hours do
# command "/usr/bin/some_great_command"
# runner "MyModel.some_method"
# rake "some:great:rake:task"
# end
#
# every 4.days do
# runner "AnotherModel.prune_old_records"
# end
# Learn more: http://github.com/javan/whenever
every 1.minute do
rake 'ig:update_media'
end

View File

@ -0,0 +1,14 @@
class CreateIgMedia < ActiveRecord::Migration[7.0]
def change
create_table :media do |t|
t.string :media_url
t.string :media_type
t.string :thumbnail_url
t.string :permalink
t.text :caption
t.datetime :timestamp
t.timestamps
end
end
end

25
db/schema.rb Normal file
View File

@ -0,0 +1,25 @@
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2022_02_21_014439) do
create_table "media", force: :cascade do |t|
t.string "media_url"
t.string "media_type"
t.string "thumbnail_url"
t.string "permalink"
t.text "caption"
t.datetime "timestamp"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end

25
db/seeds.rb Normal file
View File

@ -0,0 +1,25 @@
require 'instagram_basic_display_api'
require 'sinatra/activerecord'
client = InstagramBasicDisplayAPI.client(access_token: ENV['DUNDO_FARMS_IG_TOKEN'])
media = client.user_recent_media[:data].reduce([]) do |media, media_item|
if media_item[:media_type] == 'CAROUSEL_ALBUM'
media.concat client.media_children(media_item[:id])[:data]
media
else
media.append media_item
end
end
media.each do |media_item|
IGMedia.create(
id: media_item[:id],
media_url: media_item[:media_url],
media_type: media_item[:media_type],
thumbnail_url: media_item[:thumbnail_url],
permalink: media_item[:permalink],
caption: media_item[:caption],
timestamp: DateTime.parse(media_item[:timestamp])
)
end

3
models.rb Normal file
View File

@ -0,0 +1,3 @@
class IGMedia < ActiveRecord::Base
self.table_name = "media"
end

300
public/index.html Normal file
View File

@ -0,0 +1,300 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta http-equiv="x-ua-compatible" content="ie-edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Dundo Farms" />
<title>Dundo Farms</title>
<link rel="stylesheet" type="text/css" title="cultlist" href="style/css/dundo.css" />
<link rel="icon" type="image/svg+xml" href="style/img/dundo-farms.svg" />
<link rel="preconnect" href="http://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@200;400&display=swap" rel="stylesheet">
</head>
<body>
<header>
<div class="container">
<a class="logo" href="#">
<span class="main-logo">
<img src="style/img/dundo-farms-logo.svg"/>
</span>
</a>
<nav>
<ul>
<li><a href="#">about</a></li>
<li><a href="#">critters</a></li>
<li><a href="#">gallery</a></li>
<li><a href="#">merch</a></li>
</ul>
</nav>
</div>
</header>
<main>
<div class="container">
<section id="gallery">
<ul class="gallery">
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274035627_306063068069176_3809715990454679435_n.webp?stp=dst-jpg&amp;_nc_cat=111&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=15GAAuSS7rsAX-E-KPP&amp;_nc_oc=AQmf4EAETRlfWx4DfCzKb4AnnF4MK4T7mCjCfCWIjeNgpi_qe-yTjxBCm4-uZuS-qmo&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8GhObnX901VlSfGYfcmFimRguoqLjoz0JFU1W7Fu62hA&amp;oe=62169F02">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274035627_306063068069176_3809715990454679435_n.webp?stp=dst-jpg&amp;_nc_cat=111&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=15GAAuSS7rsAX-E-KPP&amp;_nc_oc=AQmf4EAETRlfWx4DfCzKb4AnnF4MK4T7mCjCfCWIjeNgpi_qe-yTjxBCm4-uZuS-qmo&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8GhObnX901VlSfGYfcmFimRguoqLjoz0JFU1W7Fu62hA&amp;oe=62169F02" alt="Spring is coming! 🌱
.
.
.
.
.
.
#springiscoming #garden #blueberries #newgrowth #gardening #growfoodnotlawns">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273930959_687706825922836_982215088524527012_n.webp?stp=dst-jpg&amp;_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=XiiWsA_MwsYAX-s4nDT&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-nZNCMys8SmosYirxZHj7g5n61wm0PPm0Mu_kCCGkDFw&amp;oe=6216DC2B">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273930959_687706825922836_982215088524527012_n.webp?stp=dst-jpg&amp;_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=XiiWsA_MwsYAX-s4nDT&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-nZNCMys8SmosYirxZHj7g5n61wm0PPm0Mu_kCCGkDFw&amp;oe=6216DC2B" alt="This fella is handsome AND HE KNOWS IT.
.
.
.
.
.
.
#silkiechicken #silkies #silkiesofinstagram #silkierooster #rooster #chicken #chickensofinstagram #backyardflock #backyardpoultry #backyardchickens">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274068762_786077189020194_8676918337247942913_n.webp.jpg?_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=cU8SxVTa5WAAX9FTBYO&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-3gqDpXm10qjPtRmIL_x3UqAI4TfbY0hkZMyQOznZ_QA&amp;oe=62165F4E">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274068762_786077189020194_8676918337247942913_n.webp.jpg?_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=cU8SxVTa5WAAX9FTBYO&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-3gqDpXm10qjPtRmIL_x3UqAI4TfbY0hkZMyQOznZ_QA&amp;oe=62165F4E" alt="Just chillin.
.
.
.
.
.
.
#petpigsofinstagram #potbellypig #petpig #potbelliedpig #petpigs #pig #potbelly #grazing #piglife">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273217138_3240492509612323_2029888125176676625_n.webp.jpg?_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=X-2ckurPHZoAX8W4Aa0&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8USPTaPYo2KYk81d7_muPWztp8ROFg6rlxSFwBh7MqnQ&amp;oe=6216B2C3">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273217138_3240492509612323_2029888125176676625_n.webp.jpg?_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=X-2ckurPHZoAX8W4Aa0&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8USPTaPYo2KYk81d7_muPWztp8ROFg6rlxSFwBh7MqnQ&amp;oe=6216B2C3" alt="It's a muddy snout kind of day. 🐽
.
.
.
.
.
.
#petpigsofinstagram #potbellypig #potbelliedpig #minipotbellypig #minipig #muddysnout #petpig #petpigs">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273187257_110710124754166_1212094648047728318_n.webp?stp=dst-jpg&amp;_nc_cat=101&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=DnERZBEybWgAX_mJTtj&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_bbaX9dx7mxG6wuVePaGoBV6cXn2FH2ZL2S9WZHqyOkw&amp;oe=62175B22">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273187257_110710124754166_1212094648047728318_n.webp?stp=dst-jpg&amp;_nc_cat=101&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=DnERZBEybWgAX_mJTtj&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_bbaX9dx7mxG6wuVePaGoBV6cXn2FH2ZL2S9WZHqyOkw&amp;oe=62175B22" alt="Stunning!
.
.
.
.
.
.
#chickensofinstagram #backyardchickens #chicken #rhodeislandred #backyardflock #backyardpoultry">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273177737_426353225938739_3832462568446369165_n.webp.jpg?_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=oA5s4p4FME0AX-PKm3_&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-eg3AGg7u3yY7-Fu_3BOVMwbrPOjR_VUWGqZWgD1QNKw&amp;oe=6217493F">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/273177737_426353225938739_3832462568446369165_n.webp.jpg?_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=oA5s4p4FME0AX-PKm3_&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-eg3AGg7u3yY7-Fu_3BOVMwbrPOjR_VUWGqZWgD1QNKw&amp;oe=6217493F" alt="Meet Mozzarella! We have been planning out our chick acquisition strategy for the spring, but this broody lady just miiiiight convince us to get her some babies even sooner. 🤫🐣
@pittsborofeed y'all might see us soon!
.
.
.
.
.
.
#silkies #silkiechicken #silkiehen #broodyhen #backyardchickens #chickensofinstagram">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272415651_466920575091707_120562888884338889_n.webp?stp=dst-jpg&amp;_nc_cat=103&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=vlFbMtRrM0wAX_hGaeq&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_lFAJnm5yu0DhfaKmGjObSaJICzzFKEzUL2Vp---s9OA&amp;oe=62170B63">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272415651_466920575091707_120562888884338889_n.webp?stp=dst-jpg&amp;_nc_cat=103&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=vlFbMtRrM0wAX_hGaeq&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_lFAJnm5yu0DhfaKmGjObSaJICzzFKEzUL2Vp---s9OA&amp;oe=62170B63" alt="We just cannot get enough of Miss Clementine! 🐽
.
.
.
.
.
#minipig #minipotbellypig #potbellypig #petpigsofinstagram">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272667836_3214519625491980_5315851521943571422_n.webp.jpg?_nc_cat=105&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=ACSanC5TdRkAX-j2GGO&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9XNoD7xvrNTWK-ti8UWpVAuJBcdgISd03p20S0wDp5EQ&amp;oe=6216CFFD">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272667836_3214519625491980_5315851521943571422_n.webp.jpg?_nc_cat=105&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=ACSanC5TdRkAX-j2GGO&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9XNoD7xvrNTWK-ti8UWpVAuJBcdgISd03p20S0wDp5EQ&amp;oe=6216CFFD" alt="When you work really hard to provide clean, unfrozen water but your chickens just drink random bucket water. 🤦🏼
.
.
.
.
.
#backyardchickens #chickensofinstagram #silkies #silkiechicken #rooster #littlejerks">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272261904_455012899441895_6098505240036408429_n.webp.jpg?_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=jb65cao24PcAX8NzV3-&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9TCa7pGKSiFx_6NFJ_k_EtHqRElBbwaRhYJfjh9pEZfQ&amp;oe=62159937">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272261904_455012899441895_6098505240036408429_n.webp.jpg?_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=jb65cao24PcAX8NzV3-&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9TCa7pGKSiFx_6NFJ_k_EtHqRElBbwaRhYJfjh9pEZfQ&amp;oe=62159937" alt="Clementine is settling in nicely. 😊🐖
.
.
.
.
.
#minipig #potbellypig #potbelliedpig #potbelly #pig #minipotbellypig">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/271011498_1066810977505689_2396994899223774978_n.jpg?_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=loUUa0F78HsAX8EJR92&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_KLu_54g_QVHF43PWqDIHOmpMylXS-2MmLpkeqchcXfQ&amp;oe=62162A91">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/271011498_1066810977505689_2396994899223774978_n.jpg?_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=loUUa0F78HsAX8EJR92&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_KLu_54g_QVHF43PWqDIHOmpMylXS-2MmLpkeqchcXfQ&amp;oe=62162A91" alt="🌈">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/255803394_263322255847672_6588685788069940442_n.jpg?_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=gwmrZkYYTGcAX_nO6jH&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_cAVYq1Eydddp3ZJyevlApnX0GtPT3MooH9YPkdT5jHw&amp;oe=6215B418">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/255803394_263322255847672_6588685788069940442_n.jpg?_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=gwmrZkYYTGcAX_nO6jH&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_cAVYq1Eydddp3ZJyevlApnX0GtPT3MooH9YPkdT5jHw&amp;oe=6215B418" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/255643136_270529098346430_2059207202873009687_n.jpg?_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=swByL-JeCJAAX_eO-GC&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9kiV7z_6SEXBAovP3ccfDAlFLL8WOsRXrM_WqKipjb0Q&amp;oe=6215D020">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/255643136_270529098346430_2059207202873009687_n.jpg?_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=swByL-JeCJAAX_eO-GC&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9kiV7z_6SEXBAovP3ccfDAlFLL8WOsRXrM_WqKipjb0Q&amp;oe=6215D020" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274202573_638296227395407_1889077322996951738_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=hIWdO93DzZcAX_qdxNt&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8llVw8laXNg33lJSQmq8LB5EVSupIe0Zvsr34vZzue2w&amp;oe=6215A96C">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274202573_638296227395407_1889077322996951738_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=hIWdO93DzZcAX_qdxNt&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8llVw8laXNg33lJSQmq8LB5EVSupIe0Zvsr34vZzue2w&amp;oe=6215A96C" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274220983_122464530336673_7897210076538145182_n.webp?stp=dst-jpg&amp;_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=AhlGPPnUJv4AX8ulGHo&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-WbkqDo1oZ0UcNupU-1DdCd7MCQFOoqSd2dIM9CstEYQ&amp;oe=6216A0BF">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274220983_122464530336673_7897210076538145182_n.webp?stp=dst-jpg&amp;_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=AhlGPPnUJv4AX8ulGHo&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-WbkqDo1oZ0UcNupU-1DdCd7MCQFOoqSd2dIM9CstEYQ&amp;oe=6216A0BF" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274300131_434715815064834_7850807439308110428_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=rTsDuaXZ3vQAX8ldSz2&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT95lL0vHc23zMc0fg0HtUP6Y8qpieujM8besZcDFjwpkQ&amp;oe=621704ED">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274300131_434715815064834_7850807439308110428_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=rTsDuaXZ3vQAX8ldSz2&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT95lL0vHc23zMc0fg0HtUP6Y8qpieujM8besZcDFjwpkQ&amp;oe=621704ED" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274180015_609732990780941_6091716493104174351_n.webp?stp=dst-jpg&amp;_nc_cat=109&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=ufqfUmBmHxsAX-WbZQz&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8xtZ7BpkcPLp_tH8dI5yfO_vlhXcQ_miBhnqUf-KvcGA&amp;oe=62167093">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274180015_609732990780941_6091716493104174351_n.webp?stp=dst-jpg&amp;_nc_cat=109&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=ufqfUmBmHxsAX-WbZQz&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8xtZ7BpkcPLp_tH8dI5yfO_vlhXcQ_miBhnqUf-KvcGA&amp;oe=62167093" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274170275_477867293844742_7094420097548034568_n.webp?stp=dst-jpg&amp;_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=Fq5iRL4js1YAX-hZyTH&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9HveFJdvYgn4yxAG_YlSzb_Tml7YkU4Op9A7FY_tsaFA&amp;oe=6215D097">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274170275_477867293844742_7094420097548034568_n.webp?stp=dst-jpg&amp;_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=Fq5iRL4js1YAX-hZyTH&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9HveFJdvYgn4yxAG_YlSzb_Tml7YkU4Op9A7FY_tsaFA&amp;oe=6215D097" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274121141_760246974955746_9150976191950510404_n.webp?stp=dst-jpg&amp;_nc_cat=109&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=Y8fftxiTpDEAX_xEkLM&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8LQwsXBvBEYpla3mdqRhbmXkQ6e5CnsuSurXETKH-NhQ&amp;oe=6216029C">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274121141_760246974955746_9150976191950510404_n.webp?stp=dst-jpg&amp;_nc_cat=109&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=Y8fftxiTpDEAX_xEkLM&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8LQwsXBvBEYpla3mdqRhbmXkQ6e5CnsuSurXETKH-NhQ&amp;oe=6216029C" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274090973_966686960640355_2287413948553163120_n.webp?stp=dst-jpg&amp;_nc_cat=111&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=lzrv26RyYdIAX8FO2Vc&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8MU5zcQVDV4TPv5JaOMToyFP4dubuNZ58E-X-CouGcPA&amp;oe=62169FB1">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274090973_966686960640355_2287413948553163120_n.webp?stp=dst-jpg&amp;_nc_cat=111&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=lzrv26RyYdIAX8FO2Vc&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8MU5zcQVDV4TPv5JaOMToyFP4dubuNZ58E-X-CouGcPA&amp;oe=62169FB1" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274101067_691158952041283_7885843958736525096_n.webp?stp=dst-jpg&amp;_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=ItHO1ZucT-IAX-5QYQH&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8hS_IheeT28RX0PHt8zah_cAe1Calv9CJSwLWmn15FFw&amp;oe=62167D4B">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274101067_691158952041283_7885843958736525096_n.webp?stp=dst-jpg&amp;_nc_cat=110&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=ItHO1ZucT-IAX-5QYQH&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8hS_IheeT28RX0PHt8zah_cAe1Calv9CJSwLWmn15FFw&amp;oe=62167D4B" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274171722_165032655862012_7830401519145232919_n.webp?stp=dst-jpg&amp;_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=1LEz1Yks1o4AX9yCsxv&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9ISPcT9XyETX6WWFJg0EOKh3pjcqtTyyFOVKW3ujiBbQ&amp;oe=62169A3D">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274171722_165032655862012_7830401519145232919_n.webp?stp=dst-jpg&amp;_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=1LEz1Yks1o4AX9yCsxv&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9ISPcT9XyETX6WWFJg0EOKh3pjcqtTyyFOVKW3ujiBbQ&amp;oe=62169A3D" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274136369_324601059465476_570632118532602238_n.webp?stp=dst-jpg&amp;_nc_cat=100&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=kKz4dncNpBsAX_uLgas&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT90ZuEpxyGFQ8U83nE1gLGROrKBtMR93lwQIzyg4yZSLw&amp;oe=621674D1">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274136369_324601059465476_570632118532602238_n.webp?stp=dst-jpg&amp;_nc_cat=100&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=kKz4dncNpBsAX_uLgas&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT90ZuEpxyGFQ8U83nE1gLGROrKBtMR93lwQIzyg4yZSLw&amp;oe=621674D1" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274063484_250903713875160_3587442918221972407_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=q0DQOq56Ix0AX9QRkhk&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_DJd68vQGHI28IivpZE-lvvJ3KkXiz9EI_BqUBiKz_3Q&amp;oe=6216178C">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/274063484_250903713875160_3587442918221972407_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=q0DQOq56Ix0AX9QRkhk&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_DJd68vQGHI28IivpZE-lvvJ3KkXiz9EI_BqUBiKz_3Q&amp;oe=6216178C" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://video-atl3-1.cdninstagram.com/v/t50.2886-16/273955504_4259464560820201_8732189247355312384_n.mp4?_nc_cat=104&amp;vs=18049124314311690_2025340768&amp;_nc_vs=HBksFQAYJEdMQTZWQkRwdnhUZzlTRVBBQUJaR2ZqYTl5NTVia1lMQUFBRhUAAsgBABUAGCRHSHdkVXhBWWViZWxBdW9CQUtOZ0haVmZhbGtyYmtZTEFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaK3ZCFsNTYPxUCKAJDMywXQCZU%2FfO2RaIYEmRhc2hfYmFzZWxpbmVfMV92MREAde4HAA%3D%3D&amp;ccb=1-5&amp;_nc_sid=59939d&amp;efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jYXJvdXNlbF9pdGVtIn0%3D&amp;_nc_ohc=b4bfFuKpOfoAX88XNH1&amp;_nc_oc=AQlxODGwlVjE3FjQ-fQnYqV3Sqnujzm-CgckLBjXZ0HdYO-URje3vigjubj5QV5SK_A&amp;_nc_ht=video-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_WlKJ6G5fVcR4g-IEY_Os8JkTi9RlJHdAyPhQAeiQICA&amp;oe=62121265&amp;_nc_rid=12bada319e">
<img class="gallery-image" src="https://video-atl3-1.cdninstagram.com/v/t50.2886-16/273955504_4259464560820201_8732189247355312384_n.mp4?_nc_cat=104&amp;vs=18049124314311690_2025340768&amp;_nc_vs=HBksFQAYJEdMQTZWQkRwdnhUZzlTRVBBQUJaR2ZqYTl5NTVia1lMQUFBRhUAAsgBABUAGCRHSHdkVXhBWWViZWxBdW9CQUtOZ0haVmZhbGtyYmtZTEFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaK3ZCFsNTYPxUCKAJDMywXQCZU%2FfO2RaIYEmRhc2hfYmFzZWxpbmVfMV92MREAde4HAA%3D%3D&amp;ccb=1-5&amp;_nc_sid=59939d&amp;efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jYXJvdXNlbF9pdGVtIn0%3D&amp;_nc_ohc=b4bfFuKpOfoAX88XNH1&amp;_nc_oc=AQlxODGwlVjE3FjQ-fQnYqV3Sqnujzm-CgckLBjXZ0HdYO-URje3vigjubj5QV5SK_A&amp;_nc_ht=video-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_WlKJ6G5fVcR4g-IEY_Os8JkTi9RlJHdAyPhQAeiQICA&amp;oe=62121265&amp;_nc_rid=12bada319e" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272249312_654765632379623_3207981049371967432_n.webp?stp=dst-jpg&amp;_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=7doQuqR_2oUAX-9pjzl&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8ECkQIsjv7fwttzMyF7PVys_k_Ze1pj12q38IC5sVO4g&amp;oe=6216FC5C">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272249312_654765632379623_3207981049371967432_n.webp?stp=dst-jpg&amp;_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=7doQuqR_2oUAX-9pjzl&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT8ECkQIsjv7fwttzMyF7PVys_k_Ze1pj12q38IC5sVO4g&amp;oe=6216FC5C" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272297200_336182285037500_1426661867128499375_n.webp.jpg?_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=n0tCns08yjEAX-EhGE8&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-3NO49uBFK-0_tXtqRccpBier2J5Mgeypx-1qkvWUizw&amp;oe=6215B838">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272297200_336182285037500_1426661867128499375_n.webp.jpg?_nc_cat=102&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=n0tCns08yjEAX-EhGE8&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-3NO49uBFK-0_tXtqRccpBier2J5Mgeypx-1qkvWUizw&amp;oe=6215B838" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272461329_772130493949972_8486210850361286656_n.webp?stp=dst-jpg&amp;_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=PqjpAm2jVokAX_h14ZE&amp;_nc_oc=AQnmCPrg6jvd2blZwl3Tpgk-frZKB2yxmfcXGjKdUWDQfGhAM_4kT-z2j_0hWi3c2mo&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9f48Mvmkxz2YVVu2GmQcUkXhHePQ00T-G-r-LRp9IMWQ&amp;oe=62162C20">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272461329_772130493949972_8486210850361286656_n.webp?stp=dst-jpg&amp;_nc_cat=107&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=PqjpAm2jVokAX_h14ZE&amp;_nc_oc=AQnmCPrg6jvd2blZwl3Tpgk-frZKB2yxmfcXGjKdUWDQfGhAM_4kT-z2j_0hWi3c2mo&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9f48Mvmkxz2YVVu2GmQcUkXhHePQ00T-G-r-LRp9IMWQ&amp;oe=62162C20" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272281225_3975003019268859_5727640762865394726_n.webp.jpg?_nc_cat=106&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=AKvXHlUSav8AX80dHqs&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-eHHeiA9UN1EXywl3p69KMZ9fEJqtYbdSerrlPlVUzIQ&amp;oe=621654A0">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272281225_3975003019268859_5727640762865394726_n.webp.jpg?_nc_cat=106&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=AKvXHlUSav8AX80dHqs&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-eHHeiA9UN1EXywl3p69KMZ9fEJqtYbdSerrlPlVUzIQ&amp;oe=621654A0" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272323802_713958576675939_601010255427747149_n.webp?stp=dst-jpg&amp;_nc_cat=106&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=zhD1VtjeU90AX-uy6si&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9WSe42xYFpnEj0BU5W-yH1VXgxNoVsddH6g1dNCoNWrw&amp;oe=62162CCC">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272323802_713958576675939_601010255427747149_n.webp?stp=dst-jpg&amp;_nc_cat=106&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=zhD1VtjeU90AX-uy6si&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT9WSe42xYFpnEj0BU5W-yH1VXgxNoVsddH6g1dNCoNWrw&amp;oe=62162CCC" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://video-atl3-1.cdninstagram.com/v/t50.2886-16/272485529_1007482006782940_2728387297963394677_n.mp4?_nc_cat=100&amp;vs=17910138821491542_600125627&amp;_nc_vs=HBksFQAYJEdKbk1QUkRjd3lHdlRKUURBSFhHeTdqS0xkMGxia1lMQUFBRhUAAsgBABUAGCRHUHBWT2hEaGJQOEhFd1VCQVBDM0VvSFNaOFpqYmtZTEFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa83s%2F%2F9fPrQBUCKAJDMywXQDSiDEm6XjUYEmRhc2hfYmFzZWxpbmVfMl92MREAde4HAA%3D%3D&amp;ccb=1-5&amp;_nc_sid=59939d&amp;efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jYXJvdXNlbF9pdGVtIn0%3D&amp;_nc_ohc=n2bLFVhaszoAX966xGo&amp;_nc_ht=video-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_WG7Bg955Y4kbXhM5M0h_Xb2PaFsAaRYM4Yx4NaL5RUA&amp;oe=62122498&amp;_nc_rid=09727f8ae4">
<img class="gallery-image" src="https://video-atl3-1.cdninstagram.com/v/t50.2886-16/272485529_1007482006782940_2728387297963394677_n.mp4?_nc_cat=100&amp;vs=17910138821491542_600125627&amp;_nc_vs=HBksFQAYJEdKbk1QUkRjd3lHdlRKUURBSFhHeTdqS0xkMGxia1lMQUFBRhUAAsgBABUAGCRHUHBWT2hEaGJQOEhFd1VCQVBDM0VvSFNaOFpqYmtZTEFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa83s%2F%2F9fPrQBUCKAJDMywXQDSiDEm6XjUYEmRhc2hfYmFzZWxpbmVfMl92MREAde4HAA%3D%3D&amp;ccb=1-5&amp;_nc_sid=59939d&amp;efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jYXJvdXNlbF9pdGVtIn0%3D&amp;_nc_ohc=n2bLFVhaszoAX966xGo&amp;_nc_ht=video-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT_WG7Bg955Y4kbXhM5M0h_Xb2PaFsAaRYM4Yx4NaL5RUA&amp;oe=62122498&amp;_nc_rid=09727f8ae4" alt="">
</a>
</li>
<li class="gallery-item" tabindex="0">
<a href="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272246245_450930223343863_7133661260108075942_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=_fjn384gQfgAX-Z6AuH&amp;_nc_oc=AQmOIS27rwIkUSGYJLt6Qaxlikw0ZSzyj3YVhbTNHEfcZjxOBhJoIndpmZxMAne20n4&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-GSEcvWUvt2-7KWorzNw02rSgczBnFc0hY8oIOEOFtpQ&amp;oe=62159E4E">
<img class="gallery-image" src="https://scontent-atl3-1.cdninstagram.com/v/t51.29350-15/272246245_450930223343863_7133661260108075942_n.webp?stp=dst-jpg&amp;_nc_cat=104&amp;ccb=1-5&amp;_nc_sid=8ae9d6&amp;_nc_ohc=_fjn384gQfgAX-Z6AuH&amp;_nc_oc=AQmOIS27rwIkUSGYJLt6Qaxlikw0ZSzyj3YVhbTNHEfcZjxOBhJoIndpmZxMAne20n4&amp;_nc_ht=scontent-atl3-1.cdninstagram.com&amp;edm=ANQ71j8EAAAA&amp;oh=00_AT-GSEcvWUvt2-7KWorzNw02rSgczBnFc0hY8oIOEOFtpQ&amp;oe=62159E4E" alt="">
</a>
</li>
</ul>
</section>
</div>
</main>
<footer>
<div class="sitemap">
</div>
<div class="copyright">
<small>&copy; Copyright 2021, Dundo Farms</small>
</div>
</footer>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 63 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

63
style/_critters.scss Normal file
View File

@ -0,0 +1,63 @@
#critters {
.bios {
list-style: none;
.bio {
display: flex;
width: 100%;
justify-content: center;
align-items: center;
&:nth-child(even) {
flex-direction: row-reverse;
img {
box-shadow: 30px 0px 0px #f2dfce;
}
.info {
text-align: right;
}
}
&:nth-child(odd) {
img {
box-shadow: -30px 0px 0px #f2dfce;
}
}
.info {
width: 50%;
padding: 10px 30px;
h1 {
font-family: 'Handlee', cursive;
text-transform: uppercase;
font-weight: 800;
font-size: 2em;
}
h2 {
font-size: .75em;
font-family: sans-serif;
color: $dundo-green;
}
p {
padding: 12px 0;
}
}
img {
border: 5px solid $off-white;
height: 200px;
width: 200px;
object-fit: cover;
border-radius: 50%;
}
}
}
}

48
style/_gallery.scss Normal file
View File

@ -0,0 +1,48 @@
body {
main {
#gallery {
.gallery {
list-style-type: none;
display: flex;
flex-wrap: wrap;
margin: -1rem -1rem;
padding-bottom: 3rem;
.gallery-item {
position: relative;
flex: 1 0 22rem;
margin: 1rem;
color: $off-white;
box-shadow: 1px 1px 1px 2px rgba(200, 200, 200,.5); cursor: pointer;
border-radius: 5%;
.gallery-image {
cursor: pointer;
border-radius: 5%;
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
.gallery-item,
.gallery {
width: auto;
margin: 0;
}
img, video {
display: block;
}
@supports (display: grid) {
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
}
}
}
}
}

99
style/_shared.scss Normal file
View File

@ -0,0 +1,99 @@
html, body {
height: 100%;
}
body {
min-width: 375px;
display: flex;
flex-direction: column;
background-color: $off-white;
header {
background-image: linear-gradient(to bottom, $dundo-sun, $off-white);
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
padding: 1em 0 3em 0;
.container {
max-width: 93.5rem;
margin: 0 auto;
padding: 0 2rem;
.main-logo {
display: block;
img {
height: 100%;
width: 100%;
}
}
}
nav {
width: 50%;
max-width: 100%;
padding: .5em 0;
ul {
display: flex;
list-style: none;
justify-content: space-evenly;
padding: 0 12px;
li {
padding: 0 5px;
position: relative;
a {
font-size: 1.25em;
text-decoration: none;
color: $dundo-black;
font-weight: 500;
font-family: Raleway;
&.current {
font-weight: 700;
}
&:hover::before {
transform: scaleX(1);
transform-origin: left;
}
&::before {
content: '';
position: absolute;
left: 0;
bottom: 23px;
width: 100%;
height: 3px;
background-color: #bacbc6;
transform: scaleX(0);
transition: .3s ease transform, .3s ease color;
transform-origin: right;
}
}
}
}
}
}
main {
padding: 0 15px;
flex: 1 0 auto;
display: flex;
justify-content: center;
.container {
max-width: 900px;
min-width: 760px;
}
}
footer {
padding: 36px 12px;
flex-shrink: 0;
height: 30px;
}
}

11
style/_variables.scss Normal file
View File

@ -0,0 +1,11 @@
// Colors
$dundo-green: #497364;
$dundo-yellow: #f2ac57;
$dundo-brown: #402814;
$dundo-peach: #f2dfce;
$dundo-gray: #f2f2f2;
$dundo-black: #0d0d0d;
$dundo-sun: #f7d193;
$off-white: #f8f8ff;

15
style/dundo.scss Normal file
View File

@ -0,0 +1,15 @@
@import 'compass';
@import 'compass/reset';
@import 'compass/utilities';
@import 'compass/css3';
@import 'https://fonts.googleapis.com/css?family=Raleway';
@import 'https://fonts.googleapis.com/css2?family=Nanum+Pen+Script';
@import 'https://fonts.googleapis.com/css2?family=Handlee';
@import 'variables';
@import 'shared';
@import 'gallery';
@import 'critters';

33
tasks/application.rake Normal file
View File

@ -0,0 +1,33 @@
desc 'Run the DundoFarms site'
task :s do
system 'rackup -p 8978'
end
namespace :ig do
desc 'update ig media cache'
task :media_sync do
get_all_ig_media
end
def get_all_ig_media
client = InstagramBasicDisplayAPI.client(access_token: ENV['DUNDO_FARMS_IG_TOKEN'])
media = client.user_recent_media[:data].reduce([]) do |media, media_item|
if media_item[:media_type] == 'CAROUSEL_ALBUM'
media.concat client.media_children(media_item[:id])[:data]
media
else
media.append media_item
end
end
puts media
end
end
# if media_item[:media_type] == "CAROUSEL_ALBUM"
# puts media_item
# puts client.media_children(media_item[:media_id])
# else
# media.append media_item
# end
# end

92
views/critters.erb Normal file
View File

@ -0,0 +1,92 @@
<section id="critters">
<ul class="bios">
<li class="bio">
<img src="style/img/bio/Otis.jpg" alt="Otis"/>
<div class="info">
<h1>Otis</h1>
<h2>Staffordshire Terrier</h2>
<p>At 10 years old, Otis is the most senior critter at Dundo Farms. His favorite pastimes include laying in the sun, laying in one of two very specifics spots on the couch, digging for roots (aka "ground sticks"), and going for car rides. Prepare to fall in love instantly when he thunks his giant noggin into your lap and stares up at you begging for head scritches.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Opie.jpg" alt="Opie"/>
<div class="info">
<h1>Opie </h1>
<h2>Corgi-Pomeranian</h2>
<p>Opie is a high-energy individual with an extreme need for control. He is a herding dog at heart and a friend to all, though his boisterous bark and harsh tone will leave you wondering if he's actually just a psycho. In the quiet moments, you look at his cute little foxy face and all is forgiven.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Maggie.jpg" alt="Maggie"/>
<div class="info">
<h1>Maggie</h1>
<h2>Breed Unknown</h2>
<p>Maggie was adopted from the streets as a repeat stray, and it doesn't take long to realize that she's a survivor. She hunts wildlife and eats garbage, and she is highly attuned to the desires of her human companions. She is also a strict enforcer of rules amongst the other dogs. Knowing that Mom and Dad do not like it when Otis jumps the fence to escape, Maggie will chase and tackle him if she sees him going for his favorite low spot in the fence.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Sammie.jpg" alt="Sammie"/>
<div class="info">
<h1>Sammie</h1>
<h2>Breed Unknown</h2>
<p>Sammie is the Quarantine Baby of the family. She was picked up as a stray on the last day before lockdowns began in March 2020 and has never known a world where Mom and Dad had to (gasp) leave for work every day. Sammie's favorite spot is acting as lumbar support in Mom's office chair while she works from home.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Clementine.jpg" alt="Clementine"/>
<div class="info">
<h1>Clementine</h1>
<h2>Miniature Pot-bellied Pig</h2>
<p>Clementine is a 5-year-old minipig who moved to Dundo Farms from her previous home in Mt. Airy. She was apprehensive of the change at first, but she is quickly getting comfortable and letting her sassy personality shine. She is whipsmart and taking to clicker-training like a champ. Her favorite activity is to carry all of her daily hay into her house by the mouthful to use it as extra bedding.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/2021Hens.jpg" alt="2021 Hens"/>
<div class="info">
<h1>Chickens</h1>
<h2>2021 Cheese Generation</h2>
<p>We purchased our very first batch of baby chicks from Little Birdie Hatchery in Wake Forest, NC in April 2021. As beginners, we chose to start with Rhode Island Reds, Buff Orpingtons, and Easter Eggers. When we saw that they also had straight run white Silkies, we couldn't resist grabbing two just for fun. The birds from this generation are all named after cheeses. We try our best to "love our flock, not individual birds," but there are a few standouts who won our hearts as they were growing out in our guest bathtub.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Feta.jpg" alt="Feta"/>
<div class="info">
<h1>Feta</h1>
<h2>Silkie Rooster</h2>
<p>We just knew Feta would be a rooster as soon as we brought him and his sister Mozzarella home after adding them to our order on a whim. He was noisy and bossy as a chick, and he was always the last to be caught whenever we needed to move the group. He grew up to be a very handsome roo who is very attentive to his hens, and he always wins his frequent wins crow-offs with the neighbor's roo.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Mozzarella.jpg" alt="Mozzeralla"/>
<div class="info">
<h1>Mozzarella</h1>
<h2>Silkie Hen</h2>
<p>Mozz is our only Silkie hen and has a special place in our hearts here at Dundo Farms. Her tiny eggs are adorable next to her sisters' larger output, and she always chooses to lay in the weirdest spots on the coop floor. She goes broody pretty often, and we think she'll make a great mom one of these days! She's extremely hygenic and can frequently be found dust bathing. Her fluffy head and feet get hilariously muddy in the rain, but she's always back to her bright, clean white on the next dry day.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Parmesan.jpg" alt="Parmesan"/>
<div class="info">
<h1>Parmesan</h1>
<h2>Buff Orpington</h2>
<p>"Little Parm" is the smallest of the Buff Orpingtons in the flock and low in the pecking order. She was always the easiest to catch as a baby chick, and therefore bonded with Mom more than her sisters back the bathtub days. As a pullet she would perch on Mom's shoulder, and she's one of our friendliest hens and most willing to be picked up.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/Gorgonzola.jpg" alt="Gorgonzola"/>
<div class="info">
<h1>Gorgonzola</h1>
<h2>Easter Egger</h2>
<p>We noticed early on that one of the Easter Eggers had mostly black coloring, unlike her more golden sisters, and seemed to always hang out in a corner of the bathtub by herself. We dubbed her the "loner goth" of the group and named her Gorgonzola, the most goth name of the blue cheeses. Even as an adult, she can usually be found eating and foraging on her own away from the group and is often the last to roost for the night.</p>
</div>
</li>
<li class="bio">
<img src="style/img/bio/2022Chicks.jpg" alt="2022 Chicks"/>
<div class="info">
<h1>Chickens</h1>
<h2>2022 _____ Generation</h2>
<p>We picked up our second batch of baby chicks at Pittsboro Feed in February 2022. Looking to increase the diversity of the flock, we added: Salmon Faverolles, Gold Wyandottes, Partridge Rocks, Blue Australorps, and Blue Stars. This time around we have a brooder set up in nursery section of the coop where they will grow up in close proximity to their cheesy aunts. Their naming scheme is pending review.</p>
</div>
</li>
</ul>
</section>

21
views/gallery.erb Normal file
View File

@ -0,0 +1,21 @@
<section id="gallery">
<ul class="gallery">
<% @media.each do |media_item| %>
<li class="gallery-item"
tabindex="0">
<% if media_item.media_type == 'VIDEO' %>
<video class="gallery-image"
controls>
<source src="<%= media_item.media_url %>"
poster="<%= media_item.thumbnail_url %>"/>
</video>
<% else %>
<img class="gallery-image"
src="<%= media_item.media_url %>"
alt="<%= media_item.caption %>"/>
<% end %>
</li>
<% end %>
</ul>
</section>

2
views/index.erb Normal file
View File

@ -0,0 +1,2 @@
<section id="home">
</section>

50
views/layout.erb Normal file
View File

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta http-equiv="x-ua-compatible" content="ie-edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Dundo Farms" />
<title>Dundo Farms</title>
<link rel="stylesheet" type="text/css" title="dundo" href="style/dundo.css" />
<link rel="icon" type="image/svg+xml" href="style/img/dundo-farms.svg" />
<link rel="preconnect" href="http://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@200;400&display=swap" rel="stylesheet">
</head>
<body>
<header>
<div class="container">
<span class="main-logo">
<a href="/">
<img src="style/img/dundo-farms-logo.svg"/>
</a>
</span>
</div>
<nav>
<ul>
<% settings.pages.each do |page| %>
<li>
<a class="<%= request.path_info[1..-1] == page ? 'current' : '' %>"
href="<%= page %>"><%= page %></a>
</li>
<% end %>
</ul>
</nav>
</header>
<main>
<div class="container">
<%= yield %>
</div>
</main>
<footer>
<div class="sitemap">
</div>
<div class="copyright">
<small>&copy; Copyright 2021, Dundo Farms</small>
</div>
</footer>
</body>
</html>