URL Produksi: https://euromillions.api.pedromealha.dev
URL Pementasan: https://euromillions.staging.api.pedromealha.dev
Tumpukan teknologi : Python, Flask, PostgreSQL, Docker, Terraform, Github Actions
DISCLAIMER : Data hasil dalam API ini diuraikan dari situs web https://www.euro-millions.com. Data ini hanya untuk tujuan informasi saja, Anda tidak boleh menafsirkan informasi atau data lain tersebut sebagai nasihat keuangan. Tidak ada konten dalam API ini yang merupakan ajakan, rekomendasi, dukungan, atau penawaran untuk membeli tiket Euromillions. API ini tidak berafiliasi dengan organisasi Euromillions dalam bentuk apa pun.
REST API kecil untuk kontes Euromillions. Di sini Anda akan menemukan semua hasil sejak tahun 2004 dan beberapa statistik/analisis.
Titik akhir pengundian yang sempurna memiliki beberapa fitur keren untuk memfilter pengundian berdasarkan year
atau dates
.
Hal ini dilakukan karena belum adanya cara untuk mendapatkan data tersebut dengan mudah. Karena informasi ini merupakan pengetahuan publik, institusi harus menyediakan API untuk informasi tersebut. Sementara itu, dengan titik akhir ini, komunitas dapat membangun produk luar biasa dalam konteks Euromillions, baik aplikasi seluler atau aplikasi web.
Tujuan saya juga adalah membangun aplikasi web yang memungkinkan menghasilkan angka untuk dimainkan berdasarkan statistik/analisis.
Untuk dokumentasinya kami menggunakan spesifikasi OpenAPI. Kami memiliki semua titik akhir yang tersedia dengan skema dan contoh untuk setiap kasus penggunaan. Hal ini bukan hanya karena merupakan standar industri untuk menggunakannya tetapi juga karena sangat mudah untuk diperbarui dan dibaca.
Mengenai database kami menggunakan bahasa markup Database -- disingkat DBML. Sekali lagi ini benar-benar luar biasa dan dapat mempercepat bergabungnya setiap peserta baru. Ada juga alat online untuk memvisualisasikan skema tabel.
Anda dapat memeriksa dokumen terkini di sini
Untuk hasil undian euromillions, kami menggunakan situs web https://www.euro-millions.com. Ini memiliki halaman dengan data historis untuk semua hasil pengundian yang ada. Kami tidak menggunakan API apa pun, kami menguraikan halaman web untuk data spesifik yang kami perlukan.
Untuk undian baru, kami menjalankan cronjob berikut:
# Setiap Selasa dan Jumat setiap 15 menit selama 21 jam-23 jam*/15 21-23 * * 2,5 flyctl ssh console -a prod-euromillions-api -C "sh app/scripts/cronjobs/add_draws.sh"*/15 21 -23 * * 2,5 konsol flyctl ssh -a staging-euromillions-api -C "sh aplikasi/skrip/cronjobs/add_draws.sh"
Perintah ini akan menjalankan skrip untuk menambahkan gambar di dalam wadah produksi dan pementasan kami. Dengan cara ini kami memastikan bahwa kode berjalan di lingkungan yang sama dan kami tidak memerlukan titik akhir yang terbuka untuk melakukannya.
Kami memanfaatkan kekuatan dan kesederhanaan yang dimiliki Github Actions. Sangat mudah untuk mengintegrasikan alur penerapan kami untuk pementasan dan produksi. Kami juga menjalankan Terraform di semua alur kerja kami. Saat ini, kami menggunakan registri kontainer Github untuk mendorong image buruh pelabuhan yang akan kami gunakan untuk menjalankan API kami. Karena Fly.io tidak mengizinkan kami memiliki lingkungan berbeda, kami perlu membuat aplikasi berbeda untuk pementasan dan produksi. Segera setelah kami memasukkan image tersebut, kami hanya perlu membuat rilis baru agar versi baru dapat aktif dan berjalan. Ini merupakan peningkatan besar karena sekarang API kami berjalan dalam sebuah container, sehingga lebih mudah untuk diterapkan dan dipelihara.
Untungnya kita bisa menggunakan Terraform untuk mengelola infra Fly.io dengan kode. Karena tidak banyak yang bisa dilakukan, saat ini kami menggunakan terraform untuk membuat aplikasi, IP publik aplikasi, dan sertifikat domain. Untuk databasenya, Fly.io masih belum mengizinkan untuk mengelolanya menggunakan terraform, sehingga kami harus membuatnya secara manual menggunakan flyctl
. Ini diintegrasikan ke dalam CI kami dalam alur kerja pementasan dan produksi dengan ruang kerja masing-masing.
Kami memiliki dua cara untuk mengerjakan proyek ini secara lokal: buruh pelabuhan atau menjalankan aplikasi flash.
Untuk memulai, kloning repo
git clone https://github.com/pedro-mealha/euromillions-apicd euromillions-api
Bangun dan mulai wadah buruh pelabuhan
buat start_docker
Ini akan memulai sebuah wadah dengan database postgres dan wadah lain dengan gambar python. Dalam wadah python ia akan menyalin semua file proyek, menginstal persyaratan dan terakhir menjalankan aplikasi flask.
Pastikan Anda telah menginstal python 3.12 dan database postgres.
Persyaratan pemasangan.
instalasi pip -r persyaratan.txt
Jalankan aplikasi labu
memulai
Untuk migrasi kami menggunakan yoyo. Ini sangat mudah tetapi kami memiliki beberapa perintah di Makefile:
Untuk menjalankan migrasi:
melakukan migrasi
Untuk mengembalikan migrasi terakhir:
buat migrasi_rollback
Untuk membuat migrasi baru agak rumit, karena kami tidak menyukai file .py sehingga kami memutuskan untuk menggunakan file sql mentah. Namun hal ini menimbulkan biaya yang harus kita keluarkan untuk membuat file baru secara manual.
Ikuti saja pola yang sudah ada dan seharusnya cukup mudah.
Berlisensi MIT (file LISENSI).