Giter Club home page Giter Club logo

weappe.ar's Introduction

Contributors Stargazers Issues MIT License LinkedIn


Logo

WeAppe.ar

Open source time logger backend made in Dart
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contributing
  5. License
  6. Contact

About The Project

There are many time trackers in the market that can let you log your hours to projects, but the main problematic behind them is that after the project manager take you out of the project you can't view or see your time logs anymore, so therefore you can't demonstrate the hours you worked.

(back to top)

Built With

(back to top)

Getting Started

Prerequisites

You need to have installed at least the version 2.17.0 of Dart.

Setting up the project

  1. Clone the repo
    git clone https://github.com/tomassasovsky/WeAppe.ar.git
  2. Install Pub packages
    flutter pub get
  3. Configure the .env file
    MONGO_CONNECTION=your_mongo_connection_string
    JWT_REFRESH_TOKEN_SIGNATURE=your_jwt_refresh_token_signature
    JWT_ACCESS_TOKEN_SIGNATURE=your_jwt_access_token_signature
    IMGUR_CLIENT_ID=your_client_id_for_IMGUR
    INVITE_EMAIL_ACCOUNT=your_email_address_for_invite_email@mail.com
    INVITE_EMAIL_PASSWORD=email_address_password
    INVITE_EMAIL_HOST=the_host_of_your_email_address (e.g. smtp.gmail.com)
    INVITE_EMAIL_PORT=the_port_of_your_email_address (e.g. 465)
    INVITE_EMAIL_USER_NAME=The Name You Want To Use For The Email Address (e.g. Alfred Server)
    HOST=where_you_want_to_host_the_server (e.g. http://localhost:8080)

Deploying

This is our recomendation to deploy this backend, know that there are problably some other ways to make your project go live.

  1. Create a new project in Google Cloud Run. Here is the documentation on how to.
Logo
  1. Install the gcloud CLI https://cloud.google.com/sdk/docs/install.

  2. Go to the Google Cloud Console API and create a project. Note the project id, something like weappear-test.

  3. Run gcloud auth login to authenticate with google cloud as the documentation says.

  4. Run the next the command to deploy it:

    gcloud beta run deploy weappearbackend --source . --allow-unauthenticated --project=[PROJECT_ID, in this case, weappear-test]
  5. To set-up the enviroment variables enter to your running Google Cloud Run project and click on "Edit and deploy a new revision".

Logo
  1. Go to your variables and secrets tab, and fill out everything from the .env file.
Logo

(back to top)

Endpoints and Usage

We have an active Postman Workspace with all the endpoints and responses updated where you can check the behavior of the backend to implement it.

(back to top)

Roadmap

Testing

  • 100% test coverage

Features

  • User Login
  • Register with account activation via email.
  • Create entities to clock in/out to
  • Join entities to clock in/out to
  • Clock in/out to entities
  • Picture upload to Imgur
  • Task creation/asignation for clock ins/outs
  • Clock in/out pagination
  • 2 Factor Authentication

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feat/amazing-feature-name)
  3. Commit your Changes (git commit -m 'Add some amazing-feature')
  4. Push to the Branch (git push origin feat/amazing-feature-name)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Tomás Sasovsky - @tomaSasovsky - [email protected]

Nazareno Cavazzon - @NCavazzon - [email protected]

Jorge Rincon Arias - @JorgeR5 - [email protected]

Project Link: https://github.com/tomassasovsky/WeAppe.ar

(back to top)

weappe.ar's People

Contributors

nazarenocavazzon avatar tomassasovsky avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

weappe.ar's Issues

feat: validator helper class for middlewares

the class should have helpers to grab specified variables sent (from the HttpRequest) and cast them as a specific variable type. should also have the capability of being optional/required

feat: invites

An organization should be able to invite a person to join not only the organization itself but also the platform. it should contain:

  • email
  • type of user (employee, employer)
  • inviteRef (part of the URL that will be used to refer to that specific invite)
  • a time limit - hardcoded 7 days for MVP

feat: validate users emails

Right now if a user want to use another's person email it can because we're not validating it. So if a user is not validated, it shouldn't be able to login.

feat: Clock-In/Out

Users (whether they be employees or employers), should be able to clock in and clock out with a simple click.

Additional information on what tasks they've been working on is optionally required by the organization (or their settings, if they aren't in an organization).

feat: Categories/Subcategories/Tasks for clock in/out

Categories, subcategories, and specific tasks can be assigned by the organization to the user. After that, the user can select which category/subcategory/task they were working on at a specific time. Templates for this will also have to be made and provided to the organizations by us, the developers, to ease the process of creating one a tad.

feat: pomodoro type timer

The user should be able to use a built-in pomodoro-type timer and personalize the time focus and break times. the break times should be discounted from the overall worked time.

feat: Organizations

Users should be able to create an organization and invite other users to it.

feat: logout

When the user logs out, it would be ideal to hit an endpoint to delete the refresh token entry from the database.

feat: change mirrors/reflectable with a `newInstance` getter

So I had the idea to replace the use of the reflectable package fully.

The concept here would be adding a getter to the RouteHandler class that can be called to create a new instance of the class itself.

Would look like this:

abstract class RouteHandler<T extends RouteHandler<T>> {
  FutureOr<dynamic> defineVars(HttpRequest req, HttpResponse res) async {}

  // this is the method that is called when the route is called
  FutureOr<dynamic> call(HttpRequest req, HttpResponse res) async {
    final instance = newInstance;
    // this handles the request
    await instance.defineVars(req, res);
    req.validate();
    await instance.run(req, res);
  }

  FutureOr<dynamic> run(HttpRequest req, HttpResponse res);

  // to create a new instance internally
  T get newInstance;
}

and an implementation of this:

class SomeMiddleware extends Middleware<SomeMiddleware> {
  @override
  FutureOr run(HttpRequest req, HttpResponse res) {}

  @override
  SomeMiddleware get newInstance => SomeMiddleware();
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.