Local Elections(ローカルエレクションズ)
地方議会情報の参照と、マニュフェスト投稿ができるウェブアプリケーションです。
アカウント名 | password | |
---|---|---|
test-user1 | example1@example.com | testtest1 |
【背景】
地方議会への関心を高めるために制作しました。投票率は国政選挙と比較しても低水準であり、数百・千億円単位の予算が審議されているにも関わらず、国民の関心が高いとは言えません。また、多くの人は、地元紙や地元テレビ局等の報道から、情報を取得しますが、若者の新聞・テレビ離れが進んでいます。
【目的】
政治への関心を高めるため、ウェブ上で議員の情報を参照できるサイトを制作しました。また、地域について自由に発言・交流できる場として、マニュフェスト投稿機能を実装しました。議論が活発化し、地域社会が発展させたいと考えています。
※SSL化未対応のため、フェイスブックでのユーザー認証は本番環境でエラーとなる場合があります
※GooglechromeではTwitterのタイムラインが正常に表示されない場合があります
- フォームオブジェクトの導入
マニュフェスト投稿時に、manifestテーブルとtagテーブルの情報が更新されるように、formオブジェクトを導入しています。ユースケースを想定しながらupdate、destroyアクションを定義することで、期待通りの機能を実装することができました。 - フロントエンドのデザイン・レイアウト アプリケーションのUIはユーザーが直接接する部分であるため、サービスにおける印象を大きく左右します。そのため、PCでもスマートフォンでも操作しやすいように、レスポンシブなデザインを採用しています。
- 議員情報の不足 議員情報は管理者のみ、登録することができ、ユーザーは編集することしかできません。全国の情報を管理者が登録するには労力がかかるため、①アプリケーションの縮小(富山版、中部版など)または、②ユーザーによる議員情報の登録が必要だと考えております。
- 管理者画面の導入
ユーザー・議員情報の管理を効率化するため。 - 質問投稿機能
自治体の予算案等でわからない点をユーザー同士で解決するため。 - マニュフェスト投稿機能へのマークダウン導入 マークダウンを導入することで、マニュフェストの可読性を向上させるため。 ※Vue.jsのパッケージである、「vue-md-editor」を活用し、実装予定。
- Googleアナリティクスの設定 ユーザーの行動を分析し、今後のサイト制作に活用するため。
Ruby, Ruby on Rails
ERB, Sass, JavaScript, Ajax
Mysql, Sequel pro
Nginx
unicorn
Github, GithubDesktop
Rspec
VScode
Column | Types | Options |
---|---|---|
string | null:false, unique: true | |
nickname | string | null:false |
- has_many :sns_credentials
- has_many :assemblyman_comments, dependent: :destroy
- has_many :manifests, dependent: :destroy
- has_many :manifest_comments, dependent: :destroy
- has_many :questions
- has_many :question_comments
Column | Types | Options |
---|---|---|
provider | string | - |
uid | string | - |
user | references | foreign_key: true |
- belongs_to :user, optional: true
Column | Types | Options |
---|---|---|
name | string | null:false |
prefecture | integer | null:false |
- belongs_to_active_hash :prefecture
- has_many :assemblymen
- has_many :election
Column | Types | Options |
---|---|---|
name | string | null:false |
sex | string | |
birth_of_date | date | |
position | string | |
faction | string | |
number_of_wins | integer | |
img_url | text | |
job | string | |
twitter_url | text | |
council | references | null:false, foreign_key: true |
user | references | foreign_key: true |
- belongs_to :council
- belongs_to :user, optional: true
- has_many :assemblyman_comments, dependent: :destroy
Column | Types | Options |
---|---|---|
title | string | null:false |
description | text | null:false |
user | references | null:false, foreign_key:true |
- has_many :manifest_tag_relations
- has_many :tags, through: :manifest_tag_relations
- belongs_to :user
- has_many :manifest_comments, dependent: :destroy
Column | Types | Options |
---|---|---|
title | string | null:false |
description | text | null:false |
user | references | null:false, foreign_key:true |
- has_many :question_tag_relations
- has_many :tags, through: :question_tag_relations
- belongs_to :user
- has_many :question_comments, dependent: :destroy
Column | Types | Options |
---|---|---|
name | string | null:false, uniqueness: true |
- has_many :manifest_tag_relations
- has_many :manifests, through: :manifest_tag_relations
- has_many :question_tag_relations
- has_many :questions, through: :question_tag_relations
Column | Types | Options |
---|---|---|
manifest | references | foreign_key: true |
tag | references | foreign_key: true |
- belongs_to :manifest
- belongs_to :tag
Column | Types | Options |
---|---|---|
question | references | foreign_key: true |
tag | references | foreign_key: true |
- belongs_to :question
- belongs_to :tag
Column | Types | Options |
---|---|---|
comment | text | null:false |
user | references | foreign_key: true |
assemblyman | references | foreign_key: true |
- belongs_to :user
- belongs_to :assemblyman
Column | Types | Options |
---|---|---|
comment | text | null:false |
user | references | foreign_key: true |
manifest | references | foreign_key: true |
- belongs_to :user
- belongs_to :manifest
Column | Types | Options |
---|---|---|
comment | text | null:false |
user | references | foreign_key: true |
question | references | foreign_key: true |
- belongs_to :user
- belongs_to :question
Column | Types | Options |
---|---|---|
day | date | null:false |
council | references | null: false, foreign_key: true |
- has_many :councils