---
# System prepended metadata

title: Hack U URI設計

---

# Hack U URI設計

### Memo
Postって言葉が気に食わない
Tweetみたいな単語がほしい

## Pages
各フロントエンドのページのURLとその機能について記述

### ランディング: **/**
- アプリケーションの紹介をおこない，ユーザをアプリの使用に導く

### ホーム: **/home**
- ユーザはフォローしているタグについての質問とそのディスカッションが閲覧できる
- ホームページから`メンション` `通知` `いいね` `自分のプロフィール` `新規投稿` `検索` `設定`ページへ遷移できる

### メンション　**/mentions**
- メンションされた投稿の一覧を閲覧できる

### 通知　**/notifications**
- あなたにおねがい！の通知
- 自分の投稿した質問に返信が来たときの通知

**あなたにおねがい！**
>Githubの解析結果から答えられそうな質問を通知する


### プロフィール　**/:username**
- 各ユーザのプロフィール画面
- そのユーザの投稿を閲覧できる
- アイコンとヘッダをTwitter風に表示

#### /search/followers
- そのユーザのフォロワーを閲覧できる

#### /search/following
- そのユーザのフォロー中が閲覧できる

#### /search/likes
- いいねを閲覧できる


### 投稿　**/posts**
#### /posts
- 投稿画面
- 基本はMarkDown型式で質問内容を記述する
- その他、タイトル・エラー・言語タグ・ライブラリタグ・コードなどを添付できる
#### /posts/:id 
- その投稿の詳細画面を閲覧できる
- その投稿への返信フォームを一番下に表示

#### /post/:id/edit
- その投稿の編集画面
- オープン・クローズの変更もここでする

### 検索　**/search**
- 投稿やユーザの検索を行う画面

#### /search
- 自分の検索履歴を閲覧できる

#### /search/?{getParams}
- 検索内容を表示
- getパラメータに検索条件などを記述
- 投稿に対する検索とユーザに対する検索でとりあえず2つのタブを切り替えられるようにする
    - 〇〇に対する検索は、getパラメータ内に条件指定する

### 設定　**/setting**
- 各種設定の画面
- `/setting`にアクセスした場合は、`/setting/profile`にリダイレクト

#### /setting/profile
- 自分のプロフィールの編集を行う画面
    - ヘッダ画像
    - アイコン画像
    - 表示名
    - ユーザ名
    - 紹介文
    - タグ？
    - URL

#### /setting/account**
- 現状、アカウントの削除の項目のみ
- Github連携の解除リンクを置いておく

## Components
**Header**
> 常に表示：画面上部
>Topページやコンタクトページへのリンク、ロゴの表示

**MainContents**（というか、）
>常に表示：画面中央
>ここに各ページの内容を表示する

**Menu**
>常に表示：画面左

**MenuIcon**
>Menuのアイコン

**SubContents**
>基本的に表示：画面右
>ここにトレンド情報とかを表示する
>スマホ画面や設定ページでは非表示

**Trend**
>トレンド一個分のコンポーネント

**Selecter**
>QuestionsとかNoteの切り替えるやつ

**SelectItem**
>Selecterの一個分

**Post**
>投稿の簡易表示（カードっぽいやつ）

**PostPreview**
>投稿の詳細画面

**notification**
>通知を１つ表示するコンポーネント

**Search**
>検索のコンポーネント

**Profile**
>ホーム画面に表示する自分のアイコンのやつ

**BottomMenu**
>画面下の言語とかライブラリを変更するやつ







## 見方の説明
以下の形式に従ってURIとそのURIが提供する機能の定義を行う
- ["メソッド名"] "エンドポイント名"
    - そのエンドポイントの名前
    エンドポイントがユーザに提供する機能

記述する以降のURIで，`:id`という記述の仕方を行なった場合，コロンの右側の文字（今回の場合はid）がルートに入ることを意味する．
例えば，`users/:id`ルートの具体的なルートとして，`users/1`がある

## 参考
URIの遷移の状況を図として示しているので，本ドキュメントと並べて参照されたし．
[URI遷移図]()

# 設計内容
## posts
- `[GET] /posts`
    - ホーム画面
ユーザはフォローしているタグについての質問とそのディスカッションが閲覧できる
[このデザインのページを想定](https://images-ext-2.discordapp.net/external/-IhU4P1RrHqhATWonWutxLBjYnGHOSO7_R16iQ5er4g/https/i.gyazo.com/thumb/1200/3026f4e603c6fa2f244b13fb002eaf44-png.jpg)
- `[GET] /posts/:id`
    - 投稿詳細閲覧画面
    クリックした投稿のディスカッションが閲覧できるページ
    Twitterでタイムラインの投稿をクリックするとそのツイートのリプライを閲覧できるのと同じイメージ
- `[GET] /posts/create`
    - 投稿画面
質問内容を入力し，その内容を投稿ボタンで実行できる画面
Visual Studio Codeからアクセスする画面であり，エラー内容などのパラメータを適用することが可能
- `[GET] /posts/:id/edit`
    - 投稿編集画面
    すでに投稿した内容を編集できる
    編集の確定は`[PATCH] /posts/:id`で行う
- `[POST] /posts`
    - 投稿を実行する
`posts/create`で入力した内容を永続化する
- `[DELETE] /posts/:id`
    - 投稿を削除する
    投稿した内容を削除する
    
- `[PATCH] /posts/:id`
    - 投稿内容を更新する
    編集した内容を永続化データに反映させる
    
## 

## その他
- `[GET] /`
    - ランディングページ
    アプリケーションの紹介をおこない，ユーザをアプリの使用に導く