/mixit

MiXiT website

Primary LanguageKotlinApache License 2.0Apache-2.0

Travis CI

MiXiT website

This project purpose is to power the MiXiT website.

Software design

This project software design goal is to demonstrate what a functional web application developed with Spring Boot 2, Spring WebFlux and Kotlin can look like:

Technologies used

TODO

Developer guide

Prerequisite

Start the database

We use a mongodb instance and this database is managed with a docker file

  • Run docker compose up to start the database and the console
  • Open http://0.0.0.0:8081 to open the mongodb console
  • At any moment you can stop and remove and restart the container if you need to reinit the database

Run the app in dev mod using command line

  • Run ./gradlew bootRun in another terminal
  • Run ./gradlew watch in another terminal
  • Open http://localhost:8080/ in your browser
  • If you want to debug the app, add --debug-jvm parameter to Gradle command line

Sass, TypeScript, messages*.properties and templates should be live reloaded.

Import and run the project in IDEA

  • Make sure you have at least IntelliJ IDEA 2017.2.x and IDEA Kotlin plugin 1.1.4+ (menu Tools -> Kotlin -> configure Kotlin Plugin Updates -> make sure "Stable" channel is selected -> check for updates now -> restart IDE after the update)
  • Import it in IDEA as a Gradle project
  • In IntelliJ IDEA, right click on Application.kt then Run ... or Debug ...
  • Run ./gradlew watch in another terminal
  • Open http://localhost:8080/ in your browser

Sass, TypeScript, messages*.properties and templates should be live reloaded.

Package and run the application from the executable JAR:

./gradlew clean build
java -jar build/libs/mixit-1.0.0-SNAPSHOT.jar

Deploy the app on Clever Cloud

When you merge a PR into prod branch (usually from master branch) it will trigger a deployment on Clever Cloud.

Copy PROD data to src/main/resources/data

curl https://mixitconf.org/api/blog | python3 -m json.tool > blog.json
curl https://mixitconf.org/api/faq | python3 -m json.tool > faq.json
curl https://mixitconf.org/api/event | python3 -m json.tool > events.json
curl https://mixitconf.org/api/event/images | python3 -m json.tool > events_image.json
curl https://mixitconf.org/api/user | python3 -m json.tool > users.json
curl https://mixitconf.org/api/2024/talk | python3 -m json.tool > talks_2024.json
git commit -a -m "Update data from PROD"

Database

If you need to restore a Clever Cloud archive in your local db, you can follow these steps

  • copy the archive in ./db/dump
  • restart the container
  • use this command
docker exec -it mongo-mixit mongorestore -u=admin -p=mixit23 --drop --noIndexRestore --archive=/tmp/dump/mongodb_XXXX.archive