JAX-RS(JavaのREST API)とAngularJSでGithubっぽいWebアプリを作った

動機

今年度に入ったあたりからJerseyを仕事でも使いだしたのですが、プライベートでも試すだけじゃなくてなにか作ってみようと思うようになりました。で、公開して何かしらの反応が欲しいなと。それはプラスの反応だけでなくマイナスの反応でも、成長の糧としたいから。
あとは、モチベーションを保つための手段として。

作るものはなかなかアイデアが浮かばなくて、そのとき気になりだしてたtakezoe/gitbucket · GitHubを参考にして同じようなものを作ろうと決めました(仕様に困った時に頼れるので)。

作ったもの

Githubに公開しました。
kamegu/git-webapp · GitHub
名前は特に考えず、当たり障りのない名前にしてます。 まだ実用に堪えうるレベルではありませんが、新年という区切りのいいタイミングなので公開しました。

これをcloneして、MavenでbuildしてできたwarをTomcatで動かしてもらえればhttp://localhost:8080/git-webapp/とかでアクセスできると思います。初期アカウントとしてadmin/adminでログイン可能です。
手元ではJava8とTomcat7で動作確認してます。他のServletコンテナやJavaEEサーバでは確認できてませんが、少なくともServlet3.0以降に対応したサーバが必要です。あとはStream APIとかも使ってるのでJava8は必須です。
なお、gitレポジトリのアドレスは http://localhost:8080/git-webapp/git/ユーザ名/リポジトリ名.gitになります(その辺の細かいガイドがまだコーディングできていない。。。)

設定

基本的にはTomcat7を使ってもらえれば、特に設定をしなくても動くはずです。

~userディレクトリに.gitapp/reposディレクトリが作成され、その中にユーザ名ごとに.gitのbareリポジトリが作成されます。当然ながらこのgitリポジトリはポータブルです。
DBはデフォルトだとH2が利用され、データファイルは.gitappディレクトリ内に作成されます。
なので、デフォルトのまま起動した後に、まっさらな状態に戻したいとなった場合は.gitappディレクトリの中身を全部消したうえでTomcatを起動し直してもらえれば十分です。

H2以外にもMySQLを利用することもでき、その場合はMySQLデータベースを別途作成いただき(テーブル作成は不要です、初期化時に自動生成されます)、JDBCリソースを登録(名前はjdbc/gitapp)してもらう必要があります。Tomcatの場合、src/main/webapp/META-INF/context.xmlをcontext_mysql.xmlを参考に書き換えてもらえば大丈夫かと思います。ホスト名やユーザ、パスワード等は環境に合わせてください。

最後に

改めて書きますが、基本的な機能は動くと思いますが細かいところでまだ実用に堪えれないと思います。それでも試してもらえるのであればものすごくありがたいですし、試してもらえなくとも、コードを見てもらって何かしらのフィードバックをもらえると喜びます。

また、このプログラム内で工夫した点だったりメモしておきたいものを今後ブログに残して行く予定です。