Skip to content

Commit

Permalink
Merge branch 'main' into navigation-to-map
Browse files Browse the repository at this point in the history
  • Loading branch information
Aderfish authored May 29, 2024
2 parents 7f2b06b + c7e7792 commit 5642dd1
Show file tree
Hide file tree
Showing 12 changed files with 153 additions and 10 deletions.
43 changes: 35 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,59 @@
![Coverage Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gruvw/1009ca75162e4a39e4561300eadbc5c4/raw/proxima_badge.json)
<img src="assets/images/proxima_white.png" width="100" align="right">

<a href="https://github.com/ProximaEPFL/proxima/releases/download/v0.4.1/Proxima-v0.4.1.apk"><img src="https://img.shields.io/badge/download_APK-502cb1?style=for-the-badge"></a> <img src="https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/gruvw/1009ca75162e4a39e4561300eadbc5c4/raw/proxima_badge.json">

# Proxima

**Discover the world, one post at a time!**

Although people get closer through social media, they are physically farther than ever, so we present you Proxima.

Imagine a social app that encourages people to visit interesting places instead of staying at home.
Imagine a social network where every post becomes a destination, encouraging you to step out and explore.
It is not just about scrolling through life, it's about living it, one post at a time.
It allows people to share posts, but with a catch: one has to physically move to the place the post was published in order to read it.

Please check out the Product Requirements Document (PRD) for more details about the application: [Proxima PRD](docs/proxima_prd.pdf).

**Note**: you can also check out the original project proposal: [Proxima Project Proposal](docs/proxima_project_proposal.pdf).

## Core Functionality

- **Split App Model**: Utilizes Google Firebase for storing and retrieving posts and comments, ensuring content is up-to-date and accessible.
- **User Support**: Requires account creation for posting (Google Sign-In), promoting a secure and personalized user experience.
- **Sensor Use**: Integrates GPS tracking to display posts within 100m of the user's current location, making content relevant and localized.
- **Offline Mode**: Caches posts for offline access, allowing users to view nearby content without an internet connection.

## User Interface Design
## Application

Here are a few screenshots of the main screens of the application:

<img src="docs/screenshots/feed.png" height="500"> <img src="docs/screenshots/post.png" height="500"> <img src="docs/screenshots/map.png" height="500"><br>
<img src="docs/screenshots/challenges.png" height="500"> <img src="docs/screenshots/ranking.png" height="500"> <img src="docs/screenshots/profile.png" height="500">

Link to the [Mockup](https://design.penpot.app/#/view/68a1c0e6-b27c-807b-8004-4f1cc693ba89?page-id=76cd5706-e69f-8069-8004-1a1578d3f0c7&section=interactions&index=40&share-id=ee63301e-1fa7-81b1-8004-5bef8c6bb2fd) (view mode only).
**Note**: you can also check out the video presentation of the app: [Proxima Video Presentation](https://www.youtube.com/watch?v=831yjtsBgHM).

Link to the [Wireframe](https://design.penpot.app/#/view/68a1c0e6-b27c-807b-8004-4f1cc693ba89?page-id=93d0ad32-dfe5-8194-8004-0171998eeabf&section=interactions&index=20&share-id=ee63301e-1fa7-81b1-8004-5bef2dc7d349) (view mode only).
## Technical Details

Link to the [Penpot Project](https://design.penpot.app/#/workspace/43442e9d-d45f-8169-8004-017078780238/68a1c0e6-b27c-807b-8004-4f1cc693ba89).
### User Interface Design

## Project Architecture Diagram
Link to the [Mockup](https://design.penpot.app/#/view/ee63301e-1fa7-81b1-8004-5bee937a6d84?page-id=76cd5706-e69f-8069-8004-1a1578d3f0c7&section=interactions&index=41&share-id=271c9855-ceb4-8079-8004-6c8525144113) (view mode only).

Link to the [Wireframe](https://design.penpot.app/#/view/ee63301e-1fa7-81b1-8004-5bee937a6d84?page-id=93d0ad32-dfe5-8194-8004-0171998eeabf&section=interactions&index=17&share-id=064214a4-70ce-8065-8004-6c855a546150) (view mode only).

Link to the [Penpot Project](https://design.penpot.app/#/workspace/43442e9d-d45f-8169-8004-017078780238/ee63301e-1fa7-81b1-8004-5bee937a6d84?page-id=93d0ad32-dfe5-8194-8004-0171998eeabf).

### Project Architecture Diagram

Here is the first architecture diagram of the application for MS1.
This should give a quick reference/overview on the overall architecture and the relations between the different screens, data sources, and internal state of the application.

<img src="https://github.com/ProximaEPFL/proxima/assets/53620532/a895c3e9-5c80-4c1b-bd87-decf1b1ddaea" alt="Proxima Arichtecture Diagram" width="600">

## Contributors

- Joachim Favre ([@JoachimFavre](https://github.com/JoachimFavre))
- Lucas Jung ([@gruvw](https://github.com/gruvw))
- Yoann Lafore ([@yoannLafore](https://github.com/yoannLafore))
- Camille Lannoye ([@camillelnne](https://github.com/camillelnne))
- Alberts Reisons ([@Aderfish](https://github.com/Aderfish))
- Quentin Sandoz ([@TheTexanCodeur](https://github.com/TheTexanCodeur))
- Guillaume Vitalis ([@CHOOSEIT](https://github.com/CHOOSEIT))
Binary file added docs/proxima_prd.pdf
Binary file not shown.
Binary file added docs/proxima_project_proposal.pdf
Binary file not shown.
Binary file added docs/screenshots/challenges.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 docs/screenshots/feed.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 docs/screenshots/map.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 docs/screenshots/post.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 docs/screenshots/profile.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 docs/screenshots/ranking.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 49 additions & 1 deletion test/models/ui/validation/create_account_validation_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,55 @@ void main() {
accountCreated: true,
);

expect(createAccount, createAccountCopy);
expect(createAccount == createAccountCopy, true);
});

test("equality fails on different uniqueUsernameError", () {
const createAccount = CreateAccountValidation(
uniqueUsernameError: "uniqueUsernameError",
pseudoError: "pseudoError",
accountCreated: true,
);

const createAccountCopy = CreateAccountValidation(
uniqueUsernameError: "uniqueUsernameError2",
pseudoError: "pseudoError",
accountCreated: true,
);

expect(createAccount == createAccountCopy, false);
});

test("equality fails on different pseudoError", () {
const createAccount = CreateAccountValidation(
uniqueUsernameError: "uniqueUsernameError",
pseudoError: "pseudoError",
accountCreated: true,
);

const createAccountCopy = CreateAccountValidation(
uniqueUsernameError: "uniqueUsernameError",
pseudoError: "pseudoError2",
accountCreated: true,
);

expect(createAccount == createAccountCopy, false);
});

test("equality fails on different accountCreated", () {
const createAccount = CreateAccountValidation(
uniqueUsernameError: "uniqueUsernameError",
pseudoError: "pseudoError",
accountCreated: true,
);

const createAccountCopy = CreateAccountValidation(
uniqueUsernameError: "uniqueUsernameError",
pseudoError: "pseudoError",
accountCreated: false,
);

expect(createAccount == createAccountCopy, false);
});
});
}
68 changes: 68 additions & 0 deletions test/models/ui/validation/new_comment_validation_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import "package:flutter_test/flutter_test.dart";
import "package:proxima/models/ui/validation/new_comment_validation.dart";

void main() {
group("New Comment Model Testing", () {
test("hash overrides correctly", () {
// Define the expected result
const newCommentState = NewCommentValidation(
contentError: "contentError",
posted: true,
);

final expectedHash = Object.hash(
newCommentState.contentError,
newCommentState.posted,
);

final actualHash = newCommentState.hashCode;

expect(actualHash, expectedHash);
});

test("equality overrides correctly", () {
// Define the expected result
const newCommentState = NewCommentValidation(
contentError: "commentError",
posted: true,
);

const newCommentStateCopy = NewCommentValidation(
contentError: "commentError",
posted: true,
);

expect(newCommentState == newCommentStateCopy, true);
});

test("equality fails on different contentError", () {
// Define the expected result
const newCommentState = NewCommentValidation(
contentError: "commentError",
posted: true,
);

const newCommentStateCopy = NewCommentValidation(
contentError: "commentError2",
posted: true,
);

expect(newCommentState == newCommentStateCopy, false);
});

test("equality fails on different posted", () {
// Define the expected result
const newCommentState = NewCommentValidation(
contentError: "commentError",
posted: true,
);

const newCommentStateCopy = NewCommentValidation(
contentError: "commentError",
posted: false,
);

expect(newCommentState == newCommentStateCopy, false);
});
});
}
2 changes: 1 addition & 1 deletion test/models/ui/validation/new_post_validation_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import "package:flutter_test/flutter_test.dart";
import "package:proxima/models/ui/validation/new_post_validation.dart";

void main() {
group("Create Account Model testing", () {
group("New Post Model testing", () {
test("hash overrides correctly", () {
final newPostState = NewPostValidation(
titleError: "titleError",
Expand Down

0 comments on commit 5642dd1

Please sign in to comment.