aj-r / carpoolplanner Goto Github PK
View Code? Open in Web Editor NEWWeb app for organizing carpooling
License: MIT License
Web app for organizing carpooling
License: MIT License
Use angular-ui-bootstrap alerts and make messages into an array instead of a string. This was we can display multiple messages after an asynchronous server call (especially on the home page).
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)
Show end date for trip recurrences; maybe in a tooltip.
According to Mark there are sites that will give out basic SSL certs for free. Might as well get one and use HTTPS.
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.
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.
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.
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.
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.
There is a ton of duplicated code between these pages. I'm sure there is a way to combine them.
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.
This way the admins don't have to constantly check the users page to see if anyone signed up.
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.
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 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.
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.
Currently the app logs in as root. We should make a new SQL user that only has select/insert/update/delete privileges.
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.
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.
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.
When you save which recurrences you are attending, they often re-order, which is weird.
Text notifications are way more useful, so this is lower priority.
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.
If users don't respond to the first notification, send it again 1 hour before the meeting time.
Currently the buttons are there but they don't do anything. This needs to be done before Winter term starts.
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.
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.
If the form is dirty and the user tries to navigate away, send a notification first. This should be pretty easy to do with angular.
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.
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.
After a user is approved, create the appropriate trip instances and send notifications if a carpool is happening soon.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.