├── .ruby-version ├── .travis.yml ├── .gitignore ├── Gemfile ├── Rakefile ├── Gemfile.lock ├── .github └── workflows │ └── ruby.yml ├── README.md ├── LICENSE └── schema_blogs.json /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.1.0 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 2.5.3 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # macOS 2 | .DS_Store 3 | 4 | # Nova 5 | .nova 6 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "rake" 4 | gem "json" 5 | gem "json-schema" 6 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require "json" 2 | require "json-schema" 3 | 4 | task default: "validate:json" 5 | 6 | namespace :validate do 7 | desc "Validate the JSON schema and the blogs JSON content" 8 | task :json do 9 | JSON::Validator.validate!("schema_blogs.json", "blogs.json") 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.0) 5 | public_suffix (>= 2.0.2, < 5.0) 6 | json (2.6.1) 7 | json-schema (2.8.1) 8 | addressable (>= 2.4) 9 | public_suffix (4.0.6) 10 | rake (13.0.6) 11 | 12 | PLATFORMS 13 | ruby 14 | 15 | DEPENDENCIES 16 | json 17 | json-schema 18 | rake 19 | 20 | BUNDLED WITH 21 | 2.3.3 22 | -------------------------------------------------------------------------------- /.github/workflows/ruby.yml: -------------------------------------------------------------------------------- 1 | name: Ruby 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | branches: [master] 8 | 9 | jobs: 10 | validate: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: ruby/setup-ruby@v1 15 | with: 16 | bundler-cache: true 17 | - name: Validate JSON 18 | run: | 19 | bundle exec rake validate:json 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/daveverwer/iOSDevDirectory.svg?branch=master)](https://travis-ci.org/daveverwer/iOSDevDirectory) 2 | 3 | # iOS Dev Directory 4 | 5 | This repository contains the source JSON data for the iOS Dev Directory which is located at https://iosdevdirectory.com. 6 | 7 | ## Contributing your site 8 | 9 | If your site covers iOS development and you'd like to add it to the directory, or if you'd like to add someone else's relevant site, you're more than welcome to! There are full guidelines on what is relevant and instructions over at the [Contributing to the iOS Dev Directory](https://iosdevdirectory.com/contributing/) page. 10 | 11 | ## What is the iOS Dev Directory? 12 | 13 | It's just a site that lists all of the blogs that cover the wonderful iOS development community. It was built, and is maintained by [Dave Verwer](https://twitter.com/daveverwer) who is also the author of [iOS Dev Weekly](https://iosdevweekly.com). 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Dave Verwer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /schema_blogs.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "array", 3 | "items": { 4 | "type": "object", 5 | "required": [ 6 | "language", 7 | "title", 8 | "categories" 9 | ], 10 | "additionalProperties": false, 11 | "properties": { 12 | "language": { 13 | "type": "string" 14 | }, 15 | "title": { 16 | "type": "string" 17 | }, 18 | "categories": { 19 | "type": "array", 20 | "items": { 21 | "type": "object", 22 | "required": [ 23 | "title", 24 | "slug", 25 | "description", 26 | "sites" 27 | ], 28 | "additionalProperties": false, 29 | "properties": { 30 | "title": { 31 | "type": "string" 32 | }, 33 | "slug": { 34 | "type": "string" 35 | }, 36 | "description": { 37 | "type": "string" 38 | }, 39 | "sites": { 40 | "type": "array", 41 | "items": { 42 | "type": "object", 43 | "required": [ 44 | "title", 45 | "author", 46 | "site_url", 47 | "feed_url" 48 | ], 49 | "additionalProperties": false, 50 | "properties": { 51 | "title": { 52 | "type": "string" 53 | }, 54 | "author": { 55 | "type": "string" 56 | }, 57 | "site_url": { 58 | "type": "string", 59 | "format": "uri" 60 | }, 61 | "feed_url": { 62 | "type": "string", 63 | "format": "uri" 64 | }, 65 | "twitter_url": { 66 | "type": "string", 67 | "format": "uri" 68 | }, 69 | "weibo_url": { 70 | "type": "string", 71 | "format": "uri" 72 | }, 73 | "microblog_url": { 74 | "type": "string", 75 | "format": "uri" 76 | } 77 | } 78 | } 79 | } 80 | } 81 | } 82 | } 83 | } 84 | } 85 | } 86 | --------------------------------------------------------------------------------