GithubHelp home page GithubHelp logo

carpoolplanner's People

Contributors

aj-r avatar thekevjames avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

cameliap

carpoolplanner's Issues

Delete old trip instances

Or at least mark them as deleted.

The Pick Drivers algorithm currently considers ALL instances of the current trip when calculating who has been driving the least. I think it would be better if in only considered recent history. Otherwise, if a new driver joins, they will be driving all the time for a while.

I think there is no reason to keep old trip instance data anyways; this will keep the DB size down.

Probably implement this as part of the notification service, and clean up old trip instances when the carpool is over (i.e. 1 hour after the meeting time)

Get SSL Certificate

According to Mark there are sites that will give out basic SSL certs for free. Might as well get one and use HTTPS.

Fix the date/time picker control appearance

The date/time picker is used in the trip creator UI for admins. The date picker doesn't show a date format consistent with the rest of the application - it should use App.DateFormat.

Also, the time picker should not be allowed to wrap in the middle of the control.

Also, the hour and minute controls for the time picker should be padded to 2 digits.

Notes field for UserTripInstance

It might be useful for users to add more detailed notes/comments. However, if they are just responding via SMS notifications, they probably won't use this field much. As such, this is low priority.

Number of seats resets to 1

According to Kevin: Seat count auto-resets to 1 on change when 'I will need a ride' and 'I am willing...' are set.

This may be fixed already. If not, then I think the problem is that it saves # of seats as 1 when the field is blank (but it should just not update that field). Then, when you reload the page, it shows up as 1 if you say you are a driver.

Better error messages for unhandled exceptions

Currently, if an unhandled exception occurs, the user will get a screen with an error message and stack trace. While this is useful for developers, it is not so useful for users. Also, if an unhandled exception occurs during and asynchronous postback, no error appears at all, and the user just thinks the server is really slow.

We should have a generic error message appear in these cases saying "An unexpected error has occurred. Please notify the website administrator." or something like that.

Convert to ASP.NET MVC

Right now the website uses WebForms, which is really outdated technology. Convert the code to ASP.NET MVC, and use AngularJS on the client side. This will make the code way more readable and maintainable.

Switch to Twilio for SMS messages

TextNow is just too unreliable. Use Twilio for SMS messages instead.

Unfortunately there will be "Send from Twilio trial account" at the beginning of each message, unless you pay $0.0075 per text. Which may be worth considering.

Get NotificationService running on the server

Right now the server can send a login request (https://www.textnow.com/api/sessions) just fine, but when it tries to send a message, the TextNow server returns a 400 error (ACCOUNT_NOT_VALIDATED). If I run the notification service from my PC, it works fine.

I suspect this is related to the IP of the client. I have a free trial for a VPS in Canada. I will try sending requests from it and see if that works.

Log viewer page

View entries in the logs table. Should be able to filter by level. It would also be nice to be able to search by message, filter by user, filter by time

Save the times when notifications were sent

Save the times when notifications were sent in the DB. Use this to avoid re-sending notifications (in the event that the NotificationService restarts after sending a notification), and also to know the time period for which SMS replies are valid.

UI for skipping instances

Create a UI that allows administrators to skip trip instances. Skipped instances should be visible to admins only so they can un-skip them.

I'm guessing this feature won't be used much since it is better to just let the system realize there are no drivers and text everyone saying they cannot come. It might be useful sometimes, though.

Add a password recovery system

Currently users have no way of recovering their passwords. If they forget their password then they need to re-register. This isn't a big issue because there isn't a lot of data tied to their account, but it would be nice to have an easier way of recovering an account.

Change the layout of trip instances on the detail page

Right now you click on a button next to a trip instance and a pop-up appears with more details. I think it would be better if each trip instance was an expandable region. When the region is collapsed, you see basic info like you do now (without the popup). When you expand the region, you see the basic info as well as the details that are currently in the popup.

The first item should be expanded by default because that is probably what the user is interested in.

Once this is implemented, get rid of the popup.

Notification service stops working after a while

After the notification service has been running for a while it seems to stop working. The process is still running, but the timers stop running, and it stops receiving messages from the web app. This seems to happen mainly when listening for SMS messages from users.

I've also noticed that sometimes when receiving SMS messages, the thread will hang indefinitely, even after the server responds. I wonder if this is causing the issue somehow by leaving too many threads open, or preventing memory from being garbage-collected.

Merge Trips.aspx and Default.aspx

I'm thinking of having 2 columns on Default.aspx. The right column will contain what is on Trips.aspx now. This way the users have fewer pages to flip between, and there is less confusion as to which page they are on.

Hide users page from unapproved users

I just realized that the Users page is visible to unapproved users. We should fix this using UserStatusPanels.

This is pretty urgent as currently random people can create an account and see all of our info.

Allow configuration of notification times on a per-recurrence basis

Right now you can configure when notifications are sent globally (in App.config). However, it would be nice to be able to set different notification times for different recurrences.

For example, we have some trip recurrences that occur at 7:00 PM on weekdays, and we want the initial notification to be 7 hours in advance. However, we also have a recurrence on the weekend at 3:00 PM, and a 7-hour advance notification is too early (it happens at 8:00 AM). It would be nice to be able to have, say, a 4-hour advance notification instead, but just for that recurrence.

Time zone conversion not working correctly with daylight savings time

Times are stored as UTC in the database. If a recurrence is set up to run at, say 7:00 pm every week during standard (non-daylight savings) time, then it will run an hour later (8:00 pm) during daylight savings time because it wants to run at UTC time. However, it should still run at 7:00.

There needs to be a new setting for trips that specify the time zone of the trip.

  • The setting value should default to the time zone of the administrator who created the trip.
  • When calculating trip instance dates, the system should convert the recurrence date to the trip's time zone before doing add operations.
  • When sending notifications, the time displayed should be in the trip's time zone.

Handle 2 users with the same phone number

Currently when receiving notifications, if 2 users have the same phone number listed in the DB, weird things happen. (For example, if the administrator also has a normal account and they both have the same phone number.) The NotificationManager should handle this by updating the status of both users. (e.g. If the message "yes" is received from the phone number, both users will change their status to attending).

Alternatively, we could enforce a unique constraint on the phone number field in the database. In order to do that, though, we need to convert the numbers to a consistent format before saving them.

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.