Skip to content

Commit

Permalink
Filling things up
Browse files Browse the repository at this point in the history
  • Loading branch information
Liototo committed Sep 19, 2024
1 parent e34715d commit f7f077c
Show file tree
Hide file tree
Showing 1,703 changed files with 1,338,319 additions and 1 deletion.
30 changes: 29 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,29 @@
# portfolio-en
# Bienvenue dans mon portfolio!

J'utilise ce référentiel GitHub pour présenter divers projets sur lesquels j'ai pu travailler durant mes études d'informatique.

## [Projet 1: Interaction personne-système (jeu Unity)](./jeu-unity/)

Un jeu compétitif à deux joueurs. Offre deux modes de jeux ainsi que la possible connectivité à des Cellulos (dispositifs à retour de force conçus à l'EPFL).

<p align="center"><img src="Resources\sgs_maze.png" width="50%"></p>

## [Projet 2: Introduction to machine learning (méthodes d'apprentissage automatique)](./machine-learning/)

Plusieurs méthodes courantes de machine learning, implémentées directement dans la console Python.

## [Projet 3: Projet programmation système (système de fichiers)](./systeme-fichiers/)

Une version simplifiée du système de fichiers Unix version 6, utilisable à travers l'invite de commandes Linux.

## [Projet 4: Projet de recherche en informatique (collaboration en temps réel)](./collaboration-temps-reel/)

Une version augmentée de l'extension jupyter-collaboration pour la collaboration en temps réel sur les notebooks Jupyter. Implémente plusieurs fonctionnalités visant à rendre l'extension plus pratique, en particulier dans des contextes éducatifs.

<p align="center"><img src="Resources\jup_chat.png" width="20%"> <img src="Resources\jup_poll.png" width="20%"></p>

## [Projet 5: The software enterprise - from ideas to products (application Android)](./app-android/)

Une application pour smartphones Android utilisant un compteur de pas et des fonctionnalités sociales pour rendre l'activité physique quotidienne ludique et compétitive.

<p align="center"><img src="Resources\sq_lb.png" width="15%"> <img src="Resources\sq_path.png" width="15%"></p>
Binary file added Resources/jup_chat.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/jup_poll.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/jup_rbac.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/jup_track.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sgs_classic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sgs_maze.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sgs_maze_hard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sq_goal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sq_home.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sq_lb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Resources/sq_path.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 37 additions & 0 deletions app-android/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Projet de "The software enterprise - from ideas to products": application Android

Développé par Simone Andreani, Eliott Bell, Nizar Ben Mohamed, Chun Tzu Chang, Dmitry Teploukhov et Santhos Umabalan

Bachelor, semestre 6 (févr. 2024 - juil. 2024), EPFL (Ecole Polytechnique Fédérale de Lausanne)

Ce projet a été conçu dans l'optique de nous donner un avant-goût de l'organisation du développement de logiciels dans le contexte professionnel. Nous avons suivi l'approche Scrum, avec onze sprints d'une semaine chacun, incluant tous des rendez-vous en équipe et un rendez-vous avec les assistants qui nous encadraient.

Lors de ce projet, nous avons développé StepQuest, une application Android incorporant un compteur de pas en tant que défi social. Les utilisateurs peuvent ajouter leurs amis, leur envoyer des défis, créer des routes grâce à un service GPS intégré, ou encore suivre les routes créées par d'autres utilisateurs. Chaque défi réussi ou route suivie rapporte des points, permettant aux joueurs de concourir avec leurs amis ainsi qu'avec les utilisateurs du monde entier.

### Travail effectué

Nous avons codé tous les fichiers en Kotlin du dossier StepQuest/app/src. Nous avons également intégré une connexion à une base de données Firebase. Une grande partie de notre travail consistait à rigoureusement suivre la méthode Scrum, à travers l'organisation d'un tableau Scrum, ou encore entre deux et trois rendez-vous hebdomadaires.

### Compétences acquises/travaillées

- Développement Android

- Programmation en Java/Kotlin

- Interaction avec bases de données

- Travail d'équipe et organisation

## Captures d'écran

L'écran d'accueil de l'application, principalement dédié aux fonctionnalités sociales telles que les défis en cours ou les tableaux de scores.
<p align="center"><img src="..\Resources\sq_home.png" width="15%"></p>

L'écran permettant de choisir son objectif de pas quotidien; l'utilisateur obtient des points en l'accomplissant.
<p align="center"><img src="..\Resources\sq_goal.png" width="15%"></p>

L'écran permettant de créer des routes à suivre, ou de trouver des routes créées par la communauté.
<p align="center"><img src="..\Resources\sq_path.png" width="15%"></p>

L'écran des tableaux de scores, montrant les utilisateurs avec le plus de points, à la fois globalement et parmi ses amis.
<p align="center"><img src="..\Resources\sq_lb.png" width="15%"></p>
5 changes: 5 additions & 0 deletions app-android/StepQuest/.firebaserc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"projects": {
"default": "stepquest-4de5e"
}
}
134 changes: 134 additions & 0 deletions app-android/StepQuest/.github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
name: SonarCloud

# Run the workflow when commits are pushed on main or when a PR is modified
on:
push:
branches:
- main

pull_request:
types:
- opened
- synchronize
- reopened

jobs:
ci:
name: CI
# Execute the CI on the course's runners
runs-on: ubuntu-latest

steps:
# First step : Checkout the repository on the runner
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of Sonar analysis (if we use Sonar Later)


# Kernel-based Virtual Machine (KVM) is an open source virtualization technology built into Linux. Enabling it allows the Android emulator to run faster.
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"

# To Load a fake google map api key for the test
- name: Loading Local.properties (dummy)
run: |
echo MAPS_API_KEY=\"0\" > ./local.properties
# Caching is a very useful part of a CI, as a workflow is executed in a clean environment every time,
# this means that one would need to re-download and re-process gradle files for every run. Which is very time consuming.
#
# To avoid that, we cache the the gradle folder to reuse it later.
- name: Gradle cache
uses: gradle/actions/setup-gradle@v3

# Cache the Emulator, if the cache does not hit, create the emulator
- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-34

- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar

- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle

- name: create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 34
target: google_apis
arch: x86_64
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
script: echo "Generated AVD snapshot for caching."

- name: Grant execute permission for gradlew
run: |
chmod +x ./gradlew
# Check formatting
- name: KTFmt Check
run: |
./gradlew ktfmtCheck
# This step runs gradle commands to build the application
- name: Assemble
run: |
# To run the CI with debug information, add --info
./gradlew assemble lint --parallel --build-cache
# Run Unit tests
- name: Run tests
run: |
# To run the CI with debug information, add --info
./gradlew check --parallel --build-cache
# Run connected tests on the emulator
- name: run tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 34
target: google_apis
arch: x86_64
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./gradlew connectedCheck --parallel --build-cache

# This step generates the coverage report which will be uploaded to sonar
- name: Generate Coverage Report
run: |
./gradlew jacocoTestReport
# Upload the various reports to sonar
- name: Upload report to SonarCloud
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonar --parallel --build-cache
10 changes: 10 additions & 0 deletions app-android/StepQuest/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
*.iml
.gradle
/local.properties
/.idea
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
58 changes: 58 additions & 0 deletions app-android/StepQuest/SCRUM/SCRUM board - Global M3.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
Title URL Assignees Status Sprint Task type Nature Epic Estimated (hours) Actual time (hours)
As a gamer I want to have a game that takes into account my real life actions so that I feel gratified when I walk with my friends Product Backlog
As a competitive player, I want to see my progression towards achievements that I have done through the app so that I can showcase my accomplishments and share my gaming journey with others. https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/66 Product Backlog
As a user, I want to see all the routes near me and around a certain destination so that I can plan the walks I want to try to discover my area changchuntzu0618, NizarBenMohamed, simoandreani Sprint Task Sprint 9
Add score for matching checkpoint simoandreani Sprint Task Sprint 9 3
As user, I want to send challenges to my friends so that we can have fun competitions together Liototo, Raytimz, Santboneless Sprint Task Sprint 9
Discuss where we should close gps (locationviewmodel.onPause()) changchuntzu0618, NizarBenMohamed, simoandreani Sprint Task Sprint 9 1
Create a leaderboard on firebase Santboneless Sprint Task Sprint 9 2
Make a UI for the leaderboard Santboneless Sprint Task Sprint 9 2
Organize to work on the PRD changchuntzu0618, Liototo, NizarBenMohamed, Raytimz, Santboneless, simoandreani Sprint Task Sprint 9 2
Discuss about the score and points systems changchuntzu0618, Liototo, NizarBenMohamed, Raytimz, Santboneless, simoandreani Sprint Task Sprint 9 1
As a User, I want to be able to use my app offline changchuntzu0618, Liototo, NizarBenMohamed, Raytimz, Santboneless, simoandreani Sprint Task Sprint 9
Cache routes around the player (1km radius) changchuntzu0618 Sprint Task Sprint 9 4
Cache map tiles around the user (10km radius) NizarBenMohamed Sprint Task Sprint 9 4
Merge and test all the map functionality changchuntzu0618, NizarBenMohamed, simoandreani Sprint Task Sprint 9 4
a moving marker to track/show current user location https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/153 NizarBenMohamed Done in Sprint #7 Sprint 7 5 6
Create challenge data class and interface https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/137 Raytimz Done in Sprint #7
Discuss what challenges can player send to their friends https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/183 Liototo, Raytimz, Santboneless Done in Sprint #7 Sprint 7 2 1
Fix the AddFriend function https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/138 Liototo Done in Sprint #7 Sprint 7 3 3
Implement a UI to see all the challenges accepted https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/144 Santboneless Done in Sprint #7 Sprint 7 3 2
Implement a function to receive and accept/reject a challenge https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/150 Liototo, Santboneless Done in Sprint #7 Sprint 7 3 3
Implement a function to send challenges https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/139 Santboneless Done in Sprint #7 Sprint 7 4 4
Linking everything for the challenges https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/149 Santboneless Done in Sprint #7 Sprint 7 4 4
As a social user, I want to be able to see all my friends to see if they are online or not https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/35 Liototo, Santboneless Done in Sprint #7 Sprint 5
store and reset weekly step https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/112 changchuntzu0618 Done in Sprint #7 Sprint 7 5 5
Fig bux with location marker https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/179 NizarBenMohamed Done in Sprint #8 Sprint 8 1 0.5
Make the step counter work offline https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/160 Liototo Done in Sprint #8 Sprint 8 3 4
Discuss what and how we are going to cache changchuntzu0618, Liototo, NizarBenMohamed, Santboneless, simoandreani Done in Sprint #8 Sprint 8 1 1
tidy up all map button https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/172 NizarBenMohamed Done in Sprint #8 Sprint 8 3 5
clean daily step everyday in firebase https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/114 changchuntzu0618 Done in Sprint #8 Sprint 7 3 5
show all route inside the area https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/106 simoandreani Done in Sprint #8 Sprint 6 5
Fix step counter permissions pop up notification https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/164 Santboneless Done in Sprint #8 Sprint 8 2 2
get all routes from database https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/102 simoandreani Done in Sprint #8 Sprint 7 4
Cache the profile and login https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/161 Liototo Done in Sprint #8 Sprint 8 2 4
Cache step goals for offline mode https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/157 Santboneless Done in Sprint #8 Sprint 8 2 2
Cache the total steps, daily steps and weekly steps https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/159 Santboneless Done in Sprint #8 Sprint 8 2 2
implement go back button for map https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/167 simoandreani Done in Sprint #8 Sprint 8 4
implement google maps search https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/141 NizarBenMohamed Done in Sprint #8 Sprint 7 3 6
Display picture in the checkpoint menu after taking it https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/126 simoandreani Done in Sprint #8 Sprint 7 2
Discuss how do we work for the PRD changchuntzu0618, Liototo, NizarBenMohamed, Raytimz, Santboneless, simoandreani Done in Sprint #8 Sprint 7
separate startlocationupdate from create route https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/162 changchuntzu0618 Done in Sprint #8 Sprint 8 2 2
click on marker it will show the corresponding route https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/147 changchuntzu0618 Done in Sprint #8 Sprint 7 6 12
show all closest routes around the user current location https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/127 NizarBenMohamed Done in Sprint #8 Sprint 7 3
create fake checkpoint (virtual one) for follow route https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/168 changchuntzu0618 Done in Sprint #8 Sprint 8 2 1
create a function to check if the user is following the route or not https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/170 changchuntzu0618 Done in Sprint #8 Sprint 8 8 10
As a user, I want to follow the same paths as other users and checkout the points of interests they have marked to broaden my knowledge of my current area changchuntzu0618, NizarBenMohamed, simoandreani Done in Sprint #8 Sprint 8
Implement a function that check if a challenge was completed https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/142 Raytimz Done in Sprint #8 Sprint 8 3
Add firebase emulator to the CI https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/155 Santboneless In Development Sprint 9 4
implement checkpoint match button https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/151 simoandreani In Development Sprint 8 6 0
Challenge testing https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/158 Raytimz In Development Sprint 8
Save picture to the database with the checkpoint https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/182 simoandreani In Review Sprint 8 3 5
As a new player, I want to create a unique character through customization to play the game Product Backlog
As a social player, I want to be able to connect with my friends to play the game together https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/43 Product Backlog
As a social player, I want to be able to contact my friends through a messaging plateform so that we can organize walks together Product Backlog
As a user who don't speak english, I want to have access to language settings so that I can understand the functionalities of this app Product Backlog
Bug fixing and major manual app testing Liototo, Raytimz, Santboneless Sprint backlog Sprint 9
Offline mode (caching) Sprint backlog
Implement a function that share the location between 2 players https://github.com/cs311-EPFL-StepQuest/ApplicationCode/issues/59 Raytimz Sprint backlog Sprint 7 5
Loading

0 comments on commit f7f077c

Please sign in to comment.