amoraitis / todolist Goto Github PK
View Code? Open in Web Editor NEWSimple todo-list app built with asp.net core mvc
License: MIT License
Simple todo-list app built with asp.net core mvc
License: MIT License
It would be nice to create a Dockerfile for this project
Create a nice README.md for this project
Include setup instructions
Features
Travis-ci badge
[![Build Status](https://travis-ci.org/amoraitis/TodoList.svg?branch=develop)](https://travis-ci.org/amoraitis/TodoList)
Is your feature request related to a problem? Please describe.
It would be nice if we change the TodoItem.Content
view to a markdown textview
Describe the solution you'd like
We could use simple mde to add markdown capabilities to this element's view.
Also, this TagHelper will help us parse markdown text
Describe the bug
var currentUser = await _userManager.GetUserAsync(User); returns null on sign in
To Reproduce
Steps to reproduce the behavior:
Expected behavior
User should be signed in.
Is your feature request related to a problem? Please describe.
The user will have the ability to import holidays as tasks to the monthly calendar view.
Describe the solution you'd like
Add a new Model class under TodoList/TodoList.Core/Models/
:
This will need a new migration for the new UserPreferences table.
class UserPreferences
// In iso-3166 format. 1 for now. _In the future create a config value to support multiple countries._
+ UserId: Guid[Key. 1-1 relationship to ApplicationUser.Id]
+ HolidaysInCountry : string
Use Calendarific which offers 1000 free requests/month.
A clear and concise description of any alternative solutions or features you've considered.
Add an HttpClient. Preferably create an IHolidaysCalendarService interface and an implementation of that at HolidaysCalendarService. Investiagate what methods we will need.
Create front-end code that updates the preferences. In the Calendar view or in the user's account menu(add as user preferences tab). This will automatically attach all holidays when navigating to calendar if UserPreferences.HolidaysInCountries is not null in the DB. So, TodosController.Home() Action will also return a list of holidays to be presented. Prepare the View to show the new Data in the same way the existing TODOs do.
/.content
folder.Additional context
Holidays response as documented here:
Create this under TodoList/TodoList.Core/Responses/
namespace TodoList.Core.Responses
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class HolidaysResponse
{
[JsonProperty("meta")]
public Meta Meta { get; set; }
[JsonProperty("response")]
public Response Response { get; set; }
}
public partial class Meta
{
[JsonProperty("code")]
public long Code { get; set; }
}
public partial class Response
{
[JsonProperty("holidays")]
public Holiday[] Holidays { get; set; }
}
public partial class Holiday
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("date")]
public Date Date { get; set; }
[JsonProperty("type")]
public string[] Type { get; set; }
}
public partial class Date
{
[JsonProperty("iso")]
public DateTimeOffset Iso { get; set; }
[JsonProperty("datetime")]
public Datetime Datetime { get; set; }
}
public partial class Datetime
{
[JsonProperty("year")]
public long Year { get; set; }
[JsonProperty("month")]
public long Month { get; set; }
[JsonProperty("day")]
public long Day { get; set; }
}
}
Is your feature request related to a problem? Please describe.
It's convinient to use tags to be able to organize our todos.
Describe the solution you'd like
Describe alternatives you've considered
Another possible solution is to se categories...
Additional context
ApplicationDbContext
classITodoItemService
with a method which will return a list of todos based on tags.TodosControlller
with a new search endpoint, of your choice to return a view(see the next task) when posting tags.It seems that there is an exception at EmailSender
service because there is no SendGrid API key to use. Although, you can still sign in with the user you created with the registration form.
We should update the module to bypass this in a development environment.
First, we should check if a SendGrid API key is set in the configuration.
If it's set go ahead and send the email.
If not, log an error, and exit the method(Don't try to send an email at all).
Originally posted by @amoraitis in #25 (comment)
Is your feature request related to a problem? Please describe.
We will eventually need to implement an HttpClient into our application to consume the new API introduced by #44 .
Describe the solution you'd like
Implement an HttpClient in our TodoList.Web
project and inject that in the controllers(not directly, follow principles).
When attempting to build the solution on another machine, I realized Libman was not available. As part of the setup step (before 'dotnet build'), users may need to execute 'dotnet tool install -g Microsoft.Web.LibraryManager.Cli'.
Describe the bug
I did a google search for 'filetype:env "PASSWORD" and it returned your password.env file. Those should be private, encrypted variables if I'm not mistaken.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Passwords are hashed or otherwise encrypted using variables that aren't accessible to the public.
https://github.com/amoraitis/TodoList/blob/develop/password.env
Not sure if it's a bug or just garbage testing values, but wanted to give a heads up.
After a new checkout i can't build the project. Getting erros on libman restore.
Steps to reproduce the behavior:
Expected behavior
Project build succesfull.
Screenshots
libman.json : error LIB002: The "[email protected]" library could not be resolved by the "cdnjs" provider [D:\TodoList\TodoList.Web\TodoList.Web.csproj] libman.json : error LIB002: The "[email protected]" library could not be resolved by the "cdnjs" provider [D:\TodoList\TodoList.Web\TodoList.Web.csproj] libman.json : error LIB002: The "[email protected]" library could not be resolved by the "cdnjs" provider [D:\TodoList\TodoList.Web\TodoList.Web.csproj] libman.json : error LIB002: The "[email protected]" library could not be resolved by the "cdnjs" provider [D:\TodoList\TodoList.Web\TodoList.Web.csproj]
Describe the bug
To Reproduce
Currently, we run one command per secret, which is painful for developers who want to contribute to our project.
Support for social login providers
If you want to allow your users to login with their social accounts, e.g. Facebook, follow instructions below.
Facebook
1 - Follow this guide to generate AppID and AppSecret.
2 - Execute the following instructions from TodoList/TodoList.Web:
dotnet user-secrets set Authentication:Facebook:AppId <app-id>
dotnet user-secrets set Authentication:Facebook:AppSecret <app-secret>
Google
1 - Follow this guide to generate ClientID and ClientSecret.
2 - Execute the following instructions from TodoList/TodoList.Web:
dotnet user-secrets set Authentication:Google:ClientId <client-id>
dotnet user-secrets set Authentication:Google:ClientSecret <client-secret>
Microsoft
1 - Follow this guide to generate ClientID and ClientSecret.
2 - Execute the following instructions from TodoList/TodoList.Web:
dotnet user-secrets set Authentication:Microsoft:ClientId <client-id>
dotnet user-secrets set Authentication:Microsoft:ClientSecret <client-secret>
Twitter
1 - Follow this guide to generate App ID and AppSecret.
2 - Execute the following instructions from TodoList/TodoList.Web:
dotnet user-secrets set Authentication:Twitter:ConsumerKey <consumer-key>
dotnet user-secrets set Authentication:Twitter:ConsumerSecret <consumer-secret>
Expected behavior
The user should only deploy a JSON containing the required USER_SECRETS
Include SendGrid ApiKey to the new secrets.
Additional context
Create a default JSON, containing the keys needed, with their values set to an empty string.
Here are more information and a guide on how to implement that: https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows.
Is your feature request related to a problem? Please describe.
We could add our own public pages instead of using the template's defaults.
Describe the solution you'd like
Create a minimal page for each one. Make use of the existing functionality in the HomeController.cs
and the existing razor pages under the Views/Home/
directory
Here is an issue for brainstorming for a new Xamarin App.
Please leave your suggestions in the comments.
This issue will also address the basic implementation of the new Xamarin project(s).
Basic Implementation:
Nothing more. Other issues will expand the new App
Describe the solution you'd like
It would be cool if we migrate this project to 2.1
Additional context
See docs page related to the subject: https://docs.microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-2.1
Describe the bug
When creating ToDo item from web it is failing due to UserID is null .
To Reproduce
Goto Create
Submit to item
Expected behavior
It should save the item.
Additional context
I think we should segregate DB models and viewmodels. Then do automapper and save. Please confirm and let me know.
Good to update the project to asp.net core 2.2
Hi. I'd like to contribute to the project, but where are the repository classes? I don't see them in the Data layer/module.
Is your feature request related to a problem? Please describe.
It would be nice, if we had a calendar view option in the home page, showing the todos of the current month.
Describe the solution you'd like
Frontend
Use bootstrap's tabs like buttons (I think that this requires bootstrap 4, in this case the present is blocked by #13 ) to navigate between views. Also, for the calendar view, use tables, at first, and see how that works. In each cell, we want only the titles of the Todos with each links at Todos/Details?id={id}
Backend
Another endpoint should be created at Todos/{month}-{year}
to access the required resources.
Describe alternatives you've considered
Use an existing calendar view, but in this case, let's build something from scratch...
Additional context
We need a viewmodel for the new page, to request only the data we need.
Is your feature request related to a problem? Please describe.
It would be nice to use Localizer["Example_string"]
instead of Example_String
all over the web app.
Describe the solution you'd like
Replace all the occurrences of strings with the Localizer
.
Additional context
See:
Is your feature request related to a problem? Please describe.
We really should create a multilingual website. Thus an app like this will reach a wider audience
Describe the solution you'd like
We could definitely use localization as it is described in the docs
Using .resx files is a safe solution.
Describe alternatives you've considered
We could also use transifex
Currently we use manual mapping of DTOs to their respective DB entities which clutters the code.
Proposed solution
It would be nice to use AutoMapper library for automatic mapping of objects.
Alternative solution
An alternative solution, in case we don't want to add more packages, would be to implement Map()
extension methods for every objects.
TodoList.Api
: Here we would like to expose the services with various endpoints and consume the endpoints at TodoList.Web
(I will open a new issue for this) and, why not, to create a new cross-platform mobile app.
We would like to separate the concerns for this project.
TodoList.Core
: This is where all the logic will be(model classes, services, repositories, etc.)
Is your feature request related to a problem? Please describe.
It would be nice for an app like this to import content from popular apps like Wunderlist(Microsoft will abandon Wunderlist)
Describe the solution you'd like
Use the service's API to get content
Solution steps
Additional context
Wunderlist is shutting down.
https://developer.wunderlist.com/documentation
https://developer.wunderlist.com/documentation/concepts/authorization
This issue is for discussing a generic UI update of the layout of the app.
Please come with ideas and solutions.
TODO: I want to add my own ideas.
Referencing contributors: @jenia90 @Gokilarajan @ncindric @reerden @pirland @maxalmonte14 @Kaffeetasse @vigneshmoha @theaswanson @michal880 @margosmat @MetzeloS @Hameds
Let´s upgrade the project´s bootstrap to 4 and make the required changes to the website to be functional!
The process is written here, step-by-step.
It would be nice to move to sqlite. The app should be cross-platform.
Currently blocked, because of SQLite EF Core Database Provider Limitations
Is your feature request related to a problem? Please describe.
It would be nice if we had the option to add a file in each todo
Describe the solution you'd like
Create a class to hold information about a file(Path, Size)
Add a property in the Todo
class to map the file
Create actions to upload and view the file
Last but not least, front-end additions to expose the above actions
Additional context
Documentation: https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.0
Currently a lot of the type collections are defined as array types. I think it should all be changed to generic types like ICollection
or IEnumerable
. It would simplify performing linq queries and other operations.
Is your feature request related to a problem? Please describe.
Right now(as implemented in #15 , the calendar view shows only a badge with the number of todos of each day.
Describe the solution you'd like
Extend UI functionality and make the badge clickable.
When the user clicks that badge, open a pop-up or append below the calendar a view to show details about those todos.
Is your feature request related to a problem? Please describe.
Make it easier for a new user to register with an existing social account.
Describe the solution you'd like
Additional context
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/?view=aspnetcore-2.2&tabs=visual-studio
Is your feature request related to a problem? Please describe.
It would be really beautiful to add tasks shared between users
Describe the solution you'd like
Add Participants
field to TodoList
entity and notifications to the ApplicationUser
entity for the backend. Also, an invite button for todos would be nice, among with a notification glyph in the right menu.
Describe alternatives you've considered
Make use of the SignalR library to make it real time
Is your feature request related to a problem? Please describe.
It would be nice if we integrate and use gravatar for a default user icon.
Describe the solution you'd like
Use GravatarHelper.AspNetCore
Retriεve it in the top-right menu instead of "Hi {username}"
and User's profile page
Additional context
Default size for menu-icon=20
Default size for profile-icon=60
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.